首页 > 解决方案 > react-admin: `data` 在 onSuccess() 中未定义零件

问题描述

我正在尝试遵循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()在 toast 消息消失时调用,因此onSuccess()不会收到由dataProvider.update().

示例中是否缺少我的东西?

附加信息

我正在使用react-adminv3.11.1 和 Chrome 87.0.4280.88 如果我onSuccess()从组件中删除,记录会正确更新

标签: react-admin

解决方案


如果您在Edit上下文中,则必须设置组件undoable={false}Edit防止不等待请求响应的乐观响应。

<Edit
  {...props}
  onSuccess={onSuccess}
  undoable={false}
>
    ...
</Edit>

参考:https ://marmelab.com/react-admin/CreateEdit.html#undoable


推荐阅读