具有自定义数据提供程序的自定义管理组件

时间:2020-11-03 09:54:33

标签: reactjs react-admin

我需要自定义Admin组件才能动态更新Resource组件的列表。
该文档提供了一个示例:

import * as React from 'react';
import { useEffect, useState } from 'react';
import { AdminContext, AdminUI, Resource, ListGuesser, useDataProvider } from 'react-admin';

function App() {
    return (
        <AdminContext dataProvider={myDataProvider}>
            <AsyncResources />
        </AdminContext>
    );
}

function AsyncResources() {
    const [resources, setResources] = useState([]);
    const dataProvider = useDataProvider();

    useEffect(() => {
        // Note that the `getResources` is not provided by react-admin. You have to implement your own custom verb.
        dataProvider.getResources().then(r => setResources(r));
    }, []);

    return (
        <AdminUI>
            {resources.map(resource => (
                <Resource name={resource.name} key={resource.key} list={ListGuesser} />
            ))}
        </AdminUI>
    );
}

应该与具有getResources()函数的自定义dataprovider一起使用。
好。但是该功能应该是什么样子?还是应该返回什么?因为尝试了很多东西,但没有一个飞起来。

还有。关于React Hook useEffect缺少依赖项的警告:'dataProvider'。到目前为止,在线解决方案尚不可用。因此,我认为我的示例不起作用,但有可能。在这种情况下该如何解决?

是的,简而言之-如何使文档示例中提供的功能正常工作?

+++

编辑:如果有人想知道这是我如何应用我的数据提供者:

import dataProvider from './dataprovider';

function App() {
    return (
        <AdminContext dataProvider={dataProvider}>
            <AsyncResources />
        </AdminContext>
    );
}

这是我的 get_resources 函数:

getResources: () => {
    const url = `${apiUrl}/get_resources`;

    return httpClient(url).then(
        ({ headers, json }) => ({
        data: json["data"],
        total: json["total"]
    }));
},

编辑2:
问题可能出在dataprovider之内,因为尝试从此处调用“ isDataProviderOptions”函数时,它失败并显示错误消息“ TypeError:无法将未定义的对象转换为对象”: node_modules / ra-core / esm / dataProvider / getDataProviderCallArguments.js :19
或它在调用错误的数据提供程序。不是我提供给AdminContext组件的自定义标签。

我应该添加自定义数据提供程序的代码吗?

0 个答案:

没有答案