<ListBase>

<ListBase> is a headless List page component. 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 List page component, like this one:

import { 
 DataTable,
 ListBase,
 ListToolbar,
 DataTable,
 Pagination,
 Title,
} from 'react-admin';
import { Card } from '@mui/material';
const PostList = () => (
 <ListBase>
 <Title title="Post List"/>
 <ListToolbar
 filters={[
 { source: 'q', label: 'Search', alwaysOn: true },
 { source: 'published', label: 'Published', type: 'boolean' },
 ]}
 />
 <Card>
 <DataTable>
 <DataTable.Col source="title" />
 <DataTable.Col source="author" />
 <DataTable.Col source="published_at" />
 </DataTable>
 </Card>
 <Pagination />
 </ListBase>
);

Alternatively, you can pass a render function prop instead of children. This function will receive the ListContext as argument.

const PostList = () => (
 <ListBase render={({ data, total, isPending, error }) => (
 <Card>
 <Title title="Post List" />
 <ListToolbar
 filters={[
 { source: 'q', label: 'Search', alwaysOn: true },
 { source: 'published', label: 'Published', type: 'boolean' },
 ]}
 />
 <DataTable>
 {data?.map(record => (
 <DataTable.Row key={record.id}>
 <DataTable.Col source="title" record={record} />
 <DataTable.Col source="author" record={record} />
 <DataTable.Col source="published_at" record={record} />
 </DataTable.Row>
 ))}
 </DataTable>
 <Pagination total={total} />
 </Card>
 )} />
);

Props

The <ListBase> component accepts the following props:

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, DataTable } from 'react-admin';
// Resource name is "posts"
const PostList = () => (
 <ListBase>
 <DataTable>
 <DataTable.Col source="title" />
 <DataTable.Col source="author" />
 <DataTable.Col source="published_at" />
 </DataTable>
 </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.

AltStyle によって変換されたページ (->オリジナル) /