我有自定义的react-admin页面,经常会查询多个资源(同一页面的账户、帖子、评论)。
我正在使用redux sagas来处理API请求作为副作用,同时将我的视图组件从这个逻辑中解耦出来。
自react-admin 3.0以来,为了正确使用 dataProvider
和所有 react-admin 的错误处理和通知,我应该用 useDataProvider
钩子,但是--钩子不能从传奇内部使用,那么我应该如何协调一个传奇的多个请求?
或者在保持我提到的要求的前提下,还有其他做法吗?
谢谢!我有一个自定义的react-admin页面。
React-admin 3.0去掉了sagas,你可以简单地使用promise返回的useDataProvier钩子进行数据提供者的链式调用,这在react-admin文档中解释过(https:/marmelab.comreact-adminActions.html。):
import React from 'react';
import { useDataProvider, useNotify, useRedirect, Button } from 'react-admin';
const ApproveButton = ({ record }) => {
const notify = useNotify();
const redirect = useRedirect();
const dataProvider = useDataProvider();
const approve = () => dataProvider
.update('comments', { id: record.id, data: { isApproved: true } })
.then(response => {
// call the data provider again here
data.provider.getMany('...')
})
.catch(error => {
// failure side effects go here
notify(`Comment approval error: ${error.message}`, 'warning');
});
return <Button label="Approve" onClick={approve} />;
};
react-admin演示示例展示了如何获取多个资源来填充一个复杂的页面(仪表盘),这对你的用例应该是一个很好的启发。
https:/github.commarmelabreact-adminblobmasterexamplesdemosrcdashboardDashboard.tsx。