bounty将在5天后过期。回答此问题可获得+50的声望奖励。Heikkisorsa希望吸引更多人关注此问题。
我在组件中调用了const dataProvider = useDataProvider()
,并且可以使用dataProvider.getList("resource",{})
之类的默认方法,没有任何问题。然后,我用一个自定义的get
方法扩展了我的DataProvider
,用于检索不具有所需Record
结构的对象,如下所示:
get: async <T = any>(
resource: string,
params: Partial<QueryParams>
): Promise<{
data: T
}> => {
const url = `${apiUrl}/${resource}?${stringify(params)}`
return httpClient(url)
.then(({ json }) => ({
data: json,
}))
.catch((e) => {
console.log(e)
return Promise.reject(e)
})
},
当我直接导入DataProvider
对象时,我可以毫无问题地使用此方法,但当我想将其与useDataProvider
挂钩一起使用时,我得到以下键入消息:(...a: unknown[]) => unknown
我必须添加/更改什么,才能使我的自定义数据提供器方法也具有正确的useDataProvider
挂钩类型?
我使用的是react-admin
版本3.14,可能很快就会升级到4.x。
2条答案
按热度按时间ocebsuys1#
这里有很多东西要补充:首先,创建一个如下所示的自定义DataProvider类型。
其次,创建一个自定义DataProviderProxy类型。
第三,在
useDataProvider
挂接中使用它作为类型参数。这允许在组件中正确使用键入的响应:
感谢@FatihAziz,你带我找到了正确的方向!
oxiaedzo2#
由于缺乏补充资料,
我假设
get
方法是保留的,因此您不能更改类型。相反,您可以将
get
变更为getPartial
,例如:但是,如果
get
不是由react-admin
保留的,则可以使用类型转换来代替。我在这里创建了使用类型转换的代码示例:https://codesandbox.io/s/stackoverflow-answer-forked-46jcsb?file=/src/index.ts
我希望能有所帮助,