React Admin:Redux Saga中的useDataProvider。

问题描述 投票:0回答:1

我有自定义的react-admin页面,经常会查询多个资源(同一页面的账户、帖子、评论)。

我正在使用redux sagas来处理API请求作为副作用,同时将我的视图组件从这个逻辑中解耦出来。

自react-admin 3.0以来,为了正确使用 dataProvider 和所有 react-admin 的错误处理和通知,我应该用 useDataProvider 钩子,但是--钩子不能从传奇内部使用,那么我应该如何协调一个传奇的多个请求?

或者在保持我提到的要求的前提下,还有其他做法吗?

谢谢!我有一个自定义的react-admin页面。

reactjs react-admin
1个回答
1
投票

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。

© www.soinside.com 2019 - 2024. All rights reserved.