【发布时间】:2019-05-11 04:31:21
【问题描述】:
我目前正在尝试用 TypeScript 重写 HowToGraphQL 教程,并创建了一个带有相应查询的自定义突变类,如下所示:
export const postMutation = gql`
mutation PostMutation($description: String!, $url: String!) {
post(description: $description, url: $url) {
id
createdAt
url
description
}
}
`;
export interface PostMutationData {
post: {
id: string;
createdAt: string;
url: string;
description: string;
};
}
export interface PostMutationVariables {
description: string;
url: string;
}
export class PostMutation extends Mutation<PostMutationData, PostMutationVariables> {}
消耗突变的组件基本上是这样的:
<PostMutation mutation={postMutation} variables={{ description, url }}>
{(onMutate) => <button onClick={onMutate}>Submit</button>}
</PostMutation>
不幸的是,编译器抱怨说我不能将onMutate 分配给onClick,并出现以下错误消息:
Type 'MutationFn<PostMutationData, PostMutationVariables>' is not assignable to type '(event: MouseEvent<HTMLButtonElement>) => void'.
Types of parameters 'options' and 'event' are incompatible.
Type 'MouseEvent<HTMLButtonElement>' has no properties in common with type 'MutationOptions<PostMutationData, PostMutationVariables>'.
我想知道如何正确地将onMutate 处理程序分配给onClick。
【问题讨论】:
标签: reactjs typescript graphql apollo