首页 > 解决方案 > react-admin 中是否可以有多个 dataProviders?

问题描述

如果我有多个不同的 REST API 后端(不同的应用程序做不同的事情),并且我想要一个能够对由这些不同后端管理的实体执行 CRUD 的单个 UI(基于反应管理员)的应用程序,我'我很好奇是否可以连接 react-admin 来做到这一点。

我想象的是,而不是这个(单一/全局数据提供者):

const App = () => (
    <Admin dataProvider={simpleRestProvider('http://path.to.foo.api')}>
        <Resource name="foos" list={FooList} />
    </Admin>
);

我们可以做这样的事情(资源特定的数据提供者):

    const App = () => (
        <Admin >
            <Resource name="foos" list={FooList} 
               dataProvider={simpleRestProvider('http://path.to.foo.api')} />
            <Resource name="bars" list={BarList} 
               dataProvider={simpleRestProvider('http://path.to.bar.api')} />
        </Admin>
    );

无论如何,如果您对我如何在 react-admin 中对多个后端执行 REST 有任何建议,我将不胜感激。

标签: reactjsreact-admin

解决方案


不,但您可以拥有一个超级 dataProvivder,它会根据资源选择合适的数据提供者。就像是:

const dataProviders = [
    { dataProvider: simpleRestProvider('http://path.to.foo.api'), resources: ['foos'] },
    { dataProvider: simpleRestProvider('http://path.to.bar.api'), resources: ['bars'] },
];

export default (type, resource, params) => {
    const dataProviderMapping = dataProviders.find(dp => dp.resources.includes(resource));

    return dataProviderMapping.dataProvider(type, resource, params);
}

推荐阅读