Я хочу создать файловый браузер с <List />
компонентом в <Show />
компоненте.
Допустим, у нас есть пользователь с домашним каталогом, и мы хотим создать файловый браузер для этого каталога с возможностью удаления файлов. Идея файлов не соответствует идее простых таблиц, строки которых можно редактировать.
Итак, я создал свой собственный компонент с именем пользователя и каталогом в качестве состояний, useDataprovider()
в качестве ловушки и <Table/>
из MUI, немного изменив поставщика данных. И работает неплохо.
Проблема возникает, когда в списке много позиций, например 50+. Было бы неплохо разбить на страницы. Поэтому я попытался подделать реквизит <List />
и более поздних версий <ListView />
, чтобы заменить <Table />
, но мне это не удалось.
После краткого обзора кода кажется, что реализация <List />
как есть, невозможна, потому что она использует множество хуков и других вещей. В общем, вложение одного в другое любого типа было бы беспорядком.
Мое представление об этом выглядело бы так:
function HomedirBrowser({username}) {
const [usrPath, setUsrPath] = React.useState("/");
return (<List
resource={`/users/${username}/dir/${usrPath}`}
>
<Datagrid>
<TextField source="type"/>
<TextField source="name"/>
<TextField source="last_edit"/>
<TextField source="size"/>
<Button onClick={({record}) => setUsrPath(usrPath + "/" + record.name)}>Enter</Button>
</Datagrid>
</List>)
}
Пользовательский resource
, который будет зависеть от состояния, и кнопка может изменить состояние.
Возможно ли это сделать? Или есть другой способ добиться вложения одного элемента в другой.
Конечно, я вообще не хочу сохранять состояние просмотра по URL-адресу где бы то ни было.