Hi*_*bo 6 hook typescript apollo-client react-hooks react-apollo-hooks
我正在尝试在 TypeScript 项目中创建以下形状的自定义 Apollo Client 突变挂钩:
const customApolloMutation = () => {
const [
mutationFunction,
{ data, loading, error, ...result } // or just {...result}
] = useMutation(GRAPHQL_QUERY)
return [mutationFunction,
{ data, loading, error, ...result } // or just {...result}
]
}
export default customApolloMutation ;
Run Code Online (Sandbox Code Playgroud)
一切看起来都很好,但是当我在不同的文件中导入自定义挂钩时,如下所示:
const [mutationFunction, {data, loading, error}] = customApolloMutation();
Run Code Online (Sandbox Code Playgroud)
...所有解构的 props 都会给出 TypeScript 错误,例如Property 'loading' does not exist on type '((options?: MutationFunctionOptions<any, OperationVariables> | undefined) => Promise<FetchResult<any, Record<string, any>, Record<string, any>>>) | { ...; }'.ts(2339).
知道我做错了什么吗?我需要添加一些特定的类型吗?我没有正确解构/调用钩子吗?
我已经尝试运行它,似乎类型不确定您是否会按原样返回 MutationTuple,而是您创建的自定义突变挂钩假设 returnValue 是(options?: MutationFunctionOptions<TData, TVariables>) => Promise<FetchResult<TData>> | MutationResult[]。
如果您确实需要解构,那么您可以确保已将类型添加到突变钩子中,以便向钩子的用户保证它以特定顺序感知数组。
const useApolloMutation = <TData, TVariables>(): MutationTuple<TData, TVariables> => {
const [
mutationFunction,
{ data, loading, error, ...result }
] = useMutation<TData, TVariables>(SOME_GQL);
return [
mutationFunction,
{ data, loading, error, ...result }
];
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |