React-Admin:实现自定义请求类型
React-Admin: Implementing a Custom Request Type
是否可以在 react-admin 框架的自定义提供程序中实现自定义 请求类型?
我的用例
就我而言,我有 2 个不同的参考字段案例。
1。参考 ID 字段(正常)
api -> users/1
api -> comments/1
2。子实体引用
api -> users/1/comments/1
所以我打算实现另一种请求类型,像这样:
switch (type) {
case GET_LIST:
return apiGetList(resourceName, params);
case GET_MANY:
return apiGetMany(resourceName, params);
case GET_MANY_REFERENCE:
return apiGetManyReference(resourceName, params);
case GET_MANY_REFERENCE_CUSTOM:
return apiGetManyReferenceCustom(resourceName, params);
}
但我不知道如何从自定义字段触发类型?
react-admin 更新 3.x
因此,对于 React Admin 3.x,数据提供者现在使用方法调用而不是 switch case。
比如你可以创建自己的dataprovider方法,消费者可以通过调用它来检查它是否存在。
try {
const response = await dataProvider.createMany(resource, { data: values });
return response;
} catch (error) {
const shouldTryFallback = error.toString().includes("Unknown dataProvider");
const apiError = !shouldTryFallback;
if (apiError) {
// handle api error
}
if (shouldTryFallback) {
console.log(
"createInDataProvider",
"createMany not found on data provider (you may need to implement it)"
);
try {
// try and use fallback dataprovider methods
} catch (error) {
// handle fallback error
}
}
}
return reportItems;
是否可以在 react-admin 框架的自定义提供程序中实现自定义 请求类型?
我的用例
就我而言,我有 2 个不同的参考字段案例。
1。参考 ID 字段(正常)
api -> users/1
api -> comments/1
2。子实体引用
api -> users/1/comments/1
所以我打算实现另一种请求类型,像这样:
switch (type) {
case GET_LIST:
return apiGetList(resourceName, params);
case GET_MANY:
return apiGetMany(resourceName, params);
case GET_MANY_REFERENCE:
return apiGetManyReference(resourceName, params);
case GET_MANY_REFERENCE_CUSTOM:
return apiGetManyReferenceCustom(resourceName, params);
}
但我不知道如何从自定义字段触发类型?
react-admin 更新 3.x
因此,对于 React Admin 3.x,数据提供者现在使用方法调用而不是 switch case。
比如你可以创建自己的dataprovider方法,消费者可以通过调用它来检查它是否存在。
try {
const response = await dataProvider.createMany(resource, { data: values });
return response;
} catch (error) {
const shouldTryFallback = error.toString().includes("Unknown dataProvider");
const apiError = !shouldTryFallback;
if (apiError) {
// handle api error
}
if (shouldTryFallback) {
console.log(
"createInDataProvider",
"createMany not found on data provider (you may need to implement it)"
);
try {
// try and use fallback dataprovider methods
} catch (error) {
// handle fallback error
}
}
}
return reportItems;