Попробуйте здесь:
https://codesandbox.io/s/react-admin-sample-l692r
Каждая запись должна иметь поле с именем id
, которое в вашем случае представляет ваш userID
field.
Используйте users
для имени ресурса вместо user
.
Если вы не можете изменить эту сторону сервера, вы можете сделать это в javascript.
Следующий пример кода должен работать. Добавьте его в файл AdminPanel.js
в настройках:
С помощью своего бэкэнда раскомментируйте следующие строки:
//data: json.map(record => ({"id": record.userID, ...record})),
//total: parseInt(headers.get('content-range').split('/').pop(), 10),
И измените следующую строку:
const apiUrl = "https://jsonplaceholder.typicode.com";
на
const apiUrl = "http://localhost:8080/admin";
import React from "react";
import { Admin, Resource, fetchUtils } from "react-admin";
import restProvider from "ra-data-simple-rest";
import { UserList, LoginCredentialList } from "./posts";
import { stringify } from "query-string";
const apiUrl = "https://jsonplaceholder.typicode.com";
const httpClient = fetchUtils.fetchJson;
const myDataProvider = {
...restProvider,
getList: (resource, params) => {
const { page, perPage } = params.pagination;
const { field, order } = params.sort;
const query = {
sort: JSON.stringify([field, order]),
range: JSON.stringify([(page - 1) * perPage, page * perPage - 1]),
filter: JSON.stringify(params.filter)
};
const url = `${apiUrl}/${resource}?${stringify(query)}`;
return httpClient(url).then(({ headers, json }) => ({
data: json,
//data: json.map(record => ({"id": record.userID, ...record})),
total: 10, //temporary hardcoded to avoid headers error.
//total: parseInt(headers.get('content-range').split('/').pop(), 10),
}));
}
};
class AdminPanel extends React.Component {
render() {
return (
<div>
<Admin dataProvider={myDataProvider}>
<Resource name="users" list={UserList} />
<Resource name="loginCredential" list={LoginCredentialList} />
</Admin>
</div>
);
}
}
export default AdminPanel;
// <Resource name="posts" list={UserList} edit={PostEdit} create={PostCreate}/>