我正在尝试使用 ra-data-simple-rest 数据提供程序。
import React from 'react';
import { Admin, fetchUtils, Resource } from 'react-admin';
import simpleRestProvider from 'ra-data-simple-rest';
import { PostList } from './Posts';
const dataProvider = simpleRestProvider('http://localhost:8000');
const App = () => (
<Admin dataProvider={dataProvider}>
<Resource name="posts" list={PostList} />
</Admin>
);
export default App;
react-admin 监听 http://localhost:3000/#/posts
Api 运行于:http://localhost:8000/posts,返回响应为。
$response = new JsonResponse($output);
$response->headers->set('Content-Range', 'posts 0-0/5');
$response->headers->set('Access-Control-Expose-Headers', 'Content-Range');
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
将某些内容重新调整为
{
"data": [
{
"id": "1",
"title": "Hello world",
"body": "Hello world"
},
{
"id": "2",
"title": "Hello world",
"body": "Hello world"
}
],
"total": 2
}
我收到错误为
对 'GET_LIST' 的响应必须类似于 { data : [...] },但接收到的数据不是数组。 dataProvider 的“GET_LIST”可能是错误的
如果
data
键被移除为
[
{
"id": "1",
"title": "Hello world",
"body": "Hello world"
},
{
"id": "2",
"title": "Hello world",
"body": "Hello world"
}
]
正在得到结果。
最后我明白这是按照反应管理员的预期工作的。
问题出在文档中,我注意到了
这让我很困惑。
进一步了解https://github.com/marmelab/react-admin/blob/1b6967f3367b13a6675de7047bd9385dc36a8db5/packages/ra-data-simple-rest/src/index.js#L118我了解数据是由提供商。
我面临同样的问题,在检查我的 API 响应后,我了解到对象中缺少一个字段:
{ "data": [ { "id": "1", "title": "Hello world", "body": "Hello world" }, { "title": "Hello world", "body": "Hello world" } ], "total": 2 }
第二个 obj 中缺少 id。这就是我面临这个问题的原因
任何遇到此问题的人请检查 API 响应中的所有字段。
我刚刚看到 Hari K T 的回应,那是真的。
我不明白为什么 React 不接受我这样构建的响应:
{'data': {'id': 31, 'chat_name': 'yudyucvbcvbcvb', 'theme': 'duytyu'}}
看起来 {'data': ...} 部分完全没有必要。
在我们合作伙伴的 Hari 链接中:https://github.com/marmelab/react-admin/blob/1b6967f3367b13a6675de7047bd9385dc36a8db5/packages/ra-data-simple-rest/src/index.js#L118它清楚地表明数据部分已初始化,因此在我的情况下,我发送了一个错误的 JSON,如下所示
{'data':{'data': {'id': 31, 'chat_name': 'yudyucvbcvbcvb', 'theme': 'duytyu'}}}
。
就我而言,我的错误是在 data -> {data: {id:...}} 之后请求 ID,但我发送的是 {data: {data: {id...}}}