使用 typescript 在 react-admin v3 中扩展数据提供者
Extending data providers in react-admin v3 with typescript
react-admin 的 documentation 解释了如何使用自己的功能扩展现有的数据提供者。
据我所知,代码指的是 Javascript 中的(旧)实现,而大部分代码已迁移到 Typescript。
我的目标是覆盖 ra-data-simple-rest provider to only transfer fields that have actually changed (The issue 的更新方法,说明默认情况下对象的所有字段都被传输。要更改此行为,必须修改更新方法)。
这是文档中对应的部分代码(没有改动):
import dataProvider from 'ra-data-simple-rest';
const myDataProvider = {
...dataProvider,
update: (resource, params) => {
if (resource !== 'posts' || !params.data.pictures) {
// fallback to the default implementation
return dataProvider.update(resource, params);
}
//... and so on
这会导致以下错误:
Property 'update' does not exist on type '(apiUrl: any, httpClient?: ((url: any, options?: Options | undefined) => Promise<{ status: number; headers: Headers; body: string; json: any; }>) | undefined) => DataProvider'. TS2339
6 | if (resource !== 'posts' || !params.data.pictures) {
7 | // fallback to the default implementation
> 8 | return dataProvider.update(resource, params);
| ^
9 | }
10 | /**
11 | * For posts update only, convert uploaded image in base 64 and attach it to
另一个问题:如果上述部分有效,那么 dataProvider 从哪里获得所需的参数 "apiUrl" 和 "httpClient"?
更新: 我还在 github 上将此问题报告为 issue。
文档不完整。开发人员发布了修复程序。
如更新文档中所述,您必须按如下方式更改代码:
-import dataProvider from 'ra-data-simple-rest';
+import simpleRestProvider from 'ra-data-simple-rest';
+const dataProvider = simpleRestProvider('http://path.to.my.api/');
注意:如果解决了您的问题,请将问题标记为已解决。
react-admin 的 documentation 解释了如何使用自己的功能扩展现有的数据提供者。 据我所知,代码指的是 Javascript 中的(旧)实现,而大部分代码已迁移到 Typescript。
我的目标是覆盖 ra-data-simple-rest provider to only transfer fields that have actually changed (The issue 的更新方法,说明默认情况下对象的所有字段都被传输。要更改此行为,必须修改更新方法)。
这是文档中对应的部分代码(没有改动):
import dataProvider from 'ra-data-simple-rest';
const myDataProvider = {
...dataProvider,
update: (resource, params) => {
if (resource !== 'posts' || !params.data.pictures) {
// fallback to the default implementation
return dataProvider.update(resource, params);
}
//... and so on
这会导致以下错误:
Property 'update' does not exist on type '(apiUrl: any, httpClient?: ((url: any, options?: Options | undefined) => Promise<{ status: number; headers: Headers; body: string; json: any; }>) | undefined) => DataProvider'. TS2339
6 | if (resource !== 'posts' || !params.data.pictures) {
7 | // fallback to the default implementation
> 8 | return dataProvider.update(resource, params);
| ^
9 | }
10 | /**
11 | * For posts update only, convert uploaded image in base 64 and attach it to
另一个问题:如果上述部分有效,那么 dataProvider 从哪里获得所需的参数 "apiUrl" 和 "httpClient"?
更新: 我还在 github 上将此问题报告为 issue。
文档不完整。开发人员发布了修复程序。
如更新文档中所述,您必须按如下方式更改代码:
-import dataProvider from 'ra-data-simple-rest';
+import simpleRestProvider from 'ra-data-simple-rest';
+const dataProvider = simpleRestProvider('http://path.to.my.api/');
注意:如果解决了您的问题,请将问题标记为已解决。