【发布时间】:2018-07-20 17:34:58
【问题描述】:
你所期待的: 刚刚完成教程(成功)并尝试修改代码以使用我的 API。列表视图未显示数据且控制台出现错误。
我能够添加用于登录的 API 调用,并且在列表视图中我可以看到我的 API 已成功调用。
发生了什么事: 页面显示标题和“未找到结果”
控制台错误
index.js:2178 uncaught at handleFetch TypeError: newRecords.map is not a function
at http://localhost:3001/static/js/bundle.js:69772:52
at http://localhost:3001/static/js/bundle.js:69828:24
at http://localhost:3001/static/js/bundle.js:69917:40
at Array.reduce (<anonymous>)
at ./node_modules/ra-core/lib/reducer/admin/resource/index.js.exports.default (http://localhost:3001/static/js/bundle.js:69914:30)
at combination (http://localhost:3001/static/js/bundle.js:134671:29)
at combination (http://localhost:3001/static/js/bundle.js:134671:29)
at resettableAppReducer (http://localhost:3001/static/js/bundle.js:63329:16)
at dispatch (http://localhost:3001/static/js/bundle.js:134907:22)
at http://localhost:3001/static/js/bundle.js:119507:18
at http://localhost:3001/static/js/bundle.js:132848:22
at dispatch (http://localhost:3001/static/js/bundle.js:134462:18)
at http://localhost:3001/static/js/bundle.js:134352:12
at http://localhost:3001/static/js/bundle.js:133375:52
at exec (http://localhost:3001/static/js/bundle.js:134015:5)
at flush (http://localhost:3001/static/js/bundle.js:134056:5)
at asap (http://localhost:3001/static/js/bundle.js:134029:5)
at runPutEffect (http://localhost:3001/static/js/bundle.js:133372:69)
at runEffect (http://localhost:3001/static/js/bundle.js:133321:307)
at next (http://localhost:3001/static/js/bundle.js:133201:9)
at currCb (http://localhost:3001/static/js/bundle.js:133274:7)
来自 DevTools 的 API 响应数据(无法弄清楚如何格式化数据,所以它是一个屏幕截图。)
来自 Postman 的 API 响应
{
"matches": [
{
"id": 1,
"status": "DRAFT"
},
{
"id": 2,
"status": "DRAFT"
},
{
"id": 3,
"status": "DRAFT"
},
{
"id": 4,
"status": "READY"
},
{
"id": 5,
"status": "DRAFT"
},
{
"id": 6,
"status": "DRAFT"
},
{
"id": 7,
"status": "DRAFT"
}
]
}
响应标头
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Range
Connection: keep-alive
content-range: matches 0-5/5
Date: Fri, 20 Jul 2018 16:33:12 GMT
ETag: W/"a5-KZYtsf9f1aSutDA6i7vGzddXNZk"
X-Powered-By: Express
Matches.js 代码
import React from 'react';
import { List, Edit, Create, Datagrid, ReferenceField, TextField, EditButton, DisabledInput, LongTextInput, ReferenceInput, SelectInput, SimpleForm, TextInput } from 'react-admin';
export const MatchList = (props) => (
<List {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="status" />
</Datagrid>
</List>
);
本教程使用的是虚拟 api,我切换到 ra-data-simple-rest。我不得不对我的 API 输出进行一些更改以匹配预期的格式,所以我猜这可能是问题的根源,但该错误没有帮助。
我原来有很多列,有些是空的,所以我只留下了 ID 和状态。我的结果中确实返回了 1 个附加字段(“成功”:true)。我删除了它,但得到了相同的结果。
其他信息:
环境
- React-admin 版本:2.1.2
- 未出现此问题的最新版本(如果适用):不适用
- 反应版本:16.4.1
- 浏览器:Chrome/OSX
- 堆栈跟踪(在 JS 错误的情况下):以上
【问题讨论】:
-
请告诉我你的数据休息提供者。管理组件应将其实现为 dataProvider。 marmelab.com/react-admin/DataProviders.html
-
你问我使用的是什么数据提供者?这是 ra-data-simple-rest。我正在尝试调整我的 API 输出以匹配它期望的结果。从 'ra-data-simple-rest' 导入 simpleRestProvider;
标签: react-admin