我需要自定义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组件的自定义标签。
我应该添加自定义数据提供程序的代码吗?