如何在 react-admin 中禁用乐观 UI 更新?
How to disable optimistic UI updates in react-admin?
是否可以在 react-admin 中禁用 optimistic UI 或者是否可以在运行时配置?
在编辑组件中禁用撤消属性:
<Edit undoable={false} title={<EditTitle />} actions={<EditActions />} {...props}>
如您所知,无法在 Create
组件上设置 undoable
。如果您的 props
不同于 Create
页面而不是禁用它,这里有一种处理乐观呈现的方法。
这是在 <Show/>
上处理乐观渲染的示例:
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 可以显示 <Loading/>
标志,持续时间很短我可能添加。之后请求从服务器获取数据并将其传递到 <ItemView/>
页面。
是否可以在 react-admin 中禁用 optimistic UI 或者是否可以在运行时配置?
在编辑组件中禁用撤消属性:
<Edit undoable={false} title={<EditTitle />} actions={<EditActions />} {...props}>
如您所知,无法在 Create
组件上设置 undoable
。如果您的 props
不同于 Create
页面而不是禁用它,这里有一种处理乐观呈现的方法。
这是在 <Show/>
上处理乐观渲染的示例:
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 可以显示 <Loading/>
标志,持续时间很短我可能添加。之后请求从服务器获取数据并将其传递到 <ItemView/>
页面。