如何在 react-admin 中禁用乐观 UI 更新?

Posted

技术标签:

【中文标题】如何在 react-admin 中禁用乐观 UI 更新?【英文标题】:How to disable optimistic UI updates in react-admin? 【发布时间】:2018-11-21 07:43:02 【问题描述】:

是否可以在 react-admin 中禁用乐观 UI,或者是否可以在运行时配置?

【问题讨论】:

【参考方案1】:

在 Edit 组件中禁用 undoable 属性:

<Edit undoable=false title=<EditTitle /> actions=<EditActions /> ...props>

【讨论】:

有没有办法为全球所有表单设置undoable=false?谢谢 根据Edit组件创建自己的组件,默认设置undoable属性为false 是的,我认为我希望我可以在 中传递 undoable=false 如果你想让你的 undoable 总是为 false,创建一个 Edit 组件,将 undoable props 设置为 false,而不是一直从 react-admin 导入 Edit 组件,你导入你的新创建的编辑组件。 我也想关闭 Show 页面的优化渲染,但传递 undoable=false 不起作用。【参考方案2】:

如您所知,undoable 不能在 Create 组件上设置。如果您的 propsCreate 页面不同,这是一种处理乐观渲染的方法,而不是禁用它。

这是在&lt;Show/&gt; 上处理乐观渲染的示例:

const ItemShow = (props) => 
  const record = props;
  return (
    <Show
      ...props
    >
      <ItemCreatedScreen />
    </Show>
  );
;

const ItemCreatedScreen = ( record ) => 
  if (record.isFromCreatePage) 
    return <Loading />;
   else 
    return <ItemView record=record />;
  
;

Create 组件表单中的自定义道具 isFromCreatePage 应该可以帮助您确定该道具是否确实来自“创建”页面。

Optimistic Rendering 会在几秒钟后将请求发送到 API,同时 UI 可以显示 &lt;Loading/&gt; 符号,我可能会添加很短的持续时间。之后,请求从服务器获取数据,然后可以将其传递到&lt;ItemView/&gt; 页面。

【讨论】:

以上是关于如何在 react-admin 中禁用乐观 UI 更新?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Apollo 中使用乐观 UI 处理删除突变?

Meteor,如何使用乐观的 UI 更新集合

从特定分支或打开拉取请求安装 React-Admin 包

Apollo/graphQL:如何将乐观 UI 用于嵌套反应组件的突变?

在 react-admin 中成功认证后如何重定向到其他路由

如何在 react-admin 的 show 选项中列出来自另一个端点的数据?