问题描述
嗨,我想使用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);
}
}