具有react-admin v 3.9.6的多个dataProvider

问题描述

嗨,我想使用superDataProvider在v3中使用2个dataProvider。并由资源名称决定。我遵循相同的示例,但没有成功(我也尝试使用dataProviderFactory进行演示)

import jsonServerProvider from 'ra-data-json-server';
import restProvider from 'ra-data-simple-rest';

const dataProviderRest = restProvider('https://myapi.com');
const dataProviderjson = jsonServerProvider('https://jsonplaceholder.typicode.com');

const superDataProvider = (type: any,resource: any,params: any) => {
    if (resource === 'tags') {
        return dataProviderRest;
    }
    return dataProviderjson;
}

export default superDataProvider;

解决方法

文档说dataProvider必须具有以下方法:

const dataProvider = {
    getList:    (resource,params) => Promise,getOne:     (resource,getMany:    (resource,getManyReference: (resource,create:     (resource,update:     (resource,updateMany: (resource,delete:     (resource,deleteMany: (resource,}

因此,我认为可以使用类似的方法

import jsonServerProvider from 'ra-data-json-server';
import restProvider from 'ra-data-simple-rest';

const dataProviderRest = restProvider('https://myapi.com');
const dataProviderJson = jsonServerProvider('https://jsonplaceholder.typicode.com');

export const superDataProvider = {
    ...dataProviderJson,// Preserve methods that are not extended

    update: (resource,params) => {
        if (resource === 'tags') {
            return dataProviderRest.update(resource,params);
        }
        return dataProviderJson.update(resource,params);
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...