我正试图效仿https://marmelab.com/react-admin/CreateEdit.html#onsuccess的例子。我想在更新时通知有记录标题的用户。
const onSuccess = ({ data }) => {
console.log(data) // output: undefined
notify(`Changes to post "${data.title}" saved`)
redirect('/posts');
refresh();
};JS总是抱怨undefined没有title属性。
根据文档,data来自于dataProvider.update()的响应。
onSuccess函数接收来自dataProvider调用(dataProvider.create()或dataProvider.update())的响应.
但是,根据我测试的结果,onSuccess()是在提交时立即调用的,而dataProvider.update()是在吐司消息消失时调用的,因此onSuccess()没有收到dataProvider.update()返回的承诺的结果。
在这个例子中我遗漏了什么吗?
补充资料
我使用的是react-admin v3.11.1和Chrome87.0.4280.88,如果从组件中删除onSuccess(),记录将被正确更新。
发布于 2021-01-06 08:46:41
如果您处于Edit上下文中,则必须将undoable={false}设置为Edit组件,以防止不等待请求响应的乐观响应。
<Edit
{...props}
onSuccess={onSuccess}
undoable={false}
>
...
</Edit>参考文献:https://marmelab.com/react-admin/CreateEdit.html#undoable
https://stackoverflow.com/questions/65590020
复制相似问题