使用打字稿

时间:2020-01-22 08:59:34

标签: typescript api react-admin

react-admin的documentation说明了如何使用自己的功能扩展现有的数据提供程序。 据我所知,该代码是指Javascript中的(旧)实现,而大多数代码已迁移到Typescript。

我的目标是重写ra-data-simple-rest提供程序的更新方法,以便仅传输实际已更改的字段(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的形式报告了这个问题。

2 个答案:

答案 0 :(得分:0)

文档不完整。开发人员发布了修复程序。

答案 1 :(得分:0)

如更新的文档中所述,您必须按以下步骤更改代码:

-import dataProvider from 'ra-data-simple-rest';
+import simpleRestProvider from 'ra-data-simple-rest';
+const dataProvider = simpleRestProvider('http://path.to.my.api/');

注意:如果可以解决您的问题,请将该问题标记为已解决。