React Admin:在 Redux Saga 中使用 DataProvider

React Admin: useDataProvider inside a Redux Saga

我有自定义的反应管理页面,经常查询多个资源(同一页面的帐户、帖子、评论)。

我正在使用 redux sagas 来处理 API 请求作为副作用,同时将我的视图组件与此逻辑分离。

从 react-admin 3.0 开始,为了正确使用 dataProvider 和所有 react-admin 的错误处理和通知,我应该使用 useDataProvider 钩子,但是 - 钩子不能在 sagas 中使用,那么我应该如何编排来自 saga 的多个请求?

或者有没有其他的做法,同时保持我说的要求?

谢谢!

React-admin 3.0 不再强调 sagas,您可以使用返回 useDataProvier 挂钩的 Promise 简单地链接数据提供程序调用,如 react-admin 文档 (https://marmelab.com/react-admin/Actions.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.com/marmelab/react-admin/blob/master/examples/demo/src/dashboard/Dashboard.tsx