微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

react-admin:在 <Edit> 组件的 onSuccess() 中未定义 `data` 其他信息

如何解决react-admin:在 <Edit> 组件的 onSuccess() 中未定义 `data` 其他信息

我正在尝试遵循 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() 没有收到 Promise 的结果由 dataProvider.update() 返回。

我在示例中遗漏了什么吗?

其他信息

我使用的是 react-admin v3.11.1 和 Chrome 87.0.4280.88 如果我从组件中删除 onSuccess()

,记录会正确更新

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。