<ListBase>
<ListBase> is a headless variant of <List>. It fetches a list of records from the data provider, puts it in a ListContext, and renders its children. Use it to build a custom list layout.
Contrary to <List>, it does not render the page layout, so no title, no actions, no <Card>, and no pagination.
<ListBase> relies on the useListController hook.
Usage
You can use ListBase to create your own custom reusable List component, like this one:
import { 
    ListBase,
    Title,
    ListToolbar,
    Pagination,
    Datagrid,
} from 'react-admin';
import { Card } from '@mui/material';
const MyList = ({ children, actions, filters, title, ...props }) => (
    <ListBase {...props}>
        <Title title={title}/>
        <ListToolbar
            filters={filters}
            actions={actions}
        />
        <Card>
            {children}
        </Card>
        <Pagination />
    </ListBase>
);
const PostList = () => (
    <MyList title="Post List">
        <Datagrid>
            ...
        </Datagrid>
    </MyList>
);
This custom List component has no aside component - itβs up to you to add it in pure React.
Props
The <ListBase> component accepts the same props as useListController:
- debounce
- disableAuthentication
- disableSyncWithLocation
- exporter
- filter
- filterDefaultValues
- perPage
- queryOptions
- resource
- sort
These are a subset of the props accepted by <List> - only the props that change data fetching, and not the props related to the user interface.
In addition, <ListBase> renders its children components inside a ListContext. Check the <List children> documentation for usage examples.
Security
The <ListBase> component requires authentication and will redirect anonymous users to the login page. If you want to allow anonymous access, use the disableAuthentication prop.
If your authProvider implements Access Control, <ListBase>  will only render if the user has the βlistβ access to the related resource.
For instance, for the <PostList> page below:
import { ListBase, Datagrid, TextField } from 'react-admin';
// Resource name is "posts"
const PostList = () => (
    <ListBase>
        <Datagrid>
            <TextField source="title" />
            <TextField source="author" />
            <TextField source="published_at" />
        </Datagrid>
    </ListBase>
);
<ListBase> will call authProvider.canAccess() using the following parameters:
{ action: "list", resource: "posts" }
Users without access will be redirected to the Access Denied page.
Note: Access control is disabled when you use the disableAuthentication prop.
