【问题标题】:React Admin: onSuccess does not work properly on <Edit> ComponentReact Admin:onSuccess 在 <Edit> 组件上无法正常工作
【发布时间】:2020-10-31 16:30:57
【问题描述】:

onSuccess 函数在react-admin 上无法正常工作,

我的代码:

const onSuccess = () => {
   redirect('list', props.basePath);
};


<Edit 
  onFailure={onFailure}  
  onSuccess={onSuccess}  
  title="Ediar Usuário" 
  {...props} 
>
  <SimpleForm 
     variant="standard" 
     toolbar={<CustomToolbar />} 
  >
</Edit>

第一次完美运行,但第二次没有任何反应。

甚至不触发保存事件

【问题讨论】:

  • 嗨,您能解释一下您要达到的目标吗?默认情况下,一旦编辑完成,表单将重定向到列表视图。
  • 你使用的是什么版本的 react-admin?

标签: reactjs react-admin


【解决方案1】:

我不知道这是否适用于您的用例,但在 Edit 组件上将 undoable 设置为 false 有效

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。

    Jasper Bernales 的建议很有效。

    我已将代码更改为:

    <Edit
          onSuccess={onSuccess}
          {...props}
        >
    

    到:

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

    然后...它起作用了!

    这似乎是由强制“useRedirect”或“useRefresh”干扰“undoable”安排的延迟引起的问题。文档似乎需要更新这部分。只需从 React-Admin Docs 中查看。:

    您可以通过设置 undoable={false} 来禁用此行为。接着就,随即 设置,单击删除按钮会显示一个确认对话框。 保存和删除操作都会阻塞并延迟屏幕刷新,直到数据提供者响应。

    【讨论】:

      【解决方案3】:

      遇到同样的问题,我在react-admin github 页面上遇到了这个issue。所以基本上这不是一个错误,而是......有点像Edit 组件的工作方式。简而言之:

      const onSuccess = () => {
           ...
           notify('success', 'info', null, true);
           ...
      }
      

      这是您应该在自定义 onSuccess 函数中调用 notify 以触发 dataProvider 上的真正更新的方式。

      【讨论】:

        猜你喜欢
        • 2021-08-31
        • 2019-09-25
        • 2019-10-21
        • 2018-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多