Я хочу использовать мутацию в обработчике событий. Мое событие определено так:
(JSX attribute) onOk?: ((e: React.MouseEvent<any, MouseEvent>) => void) | undefined
Так я называю мутацию с клиента
export const IMPORT_INFO_MUTATION = gql`
mutation ImportPolicy($data: ImportPolicyInput!) {
importPolicy(data:$data)
{
_id
name
}
}
И в конце концов я называю это так:
onOk={() => {
useImportPolicyMutation({
variables: {
data: {
jsonData: JSON.parse(importPolicyData)
}
},
})
}
`Не беспокойтесь о переменных и параметрах в мутации. Они в порядке. Проблема в том, что я получаю следующую ошибку:
Unhandled Rejection (Invariant Violation): Invalid hook call. Hooks can only
be called inside of the body of a function component. This could happen for
one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
Это ловушка, потому что useMutation определяется так:
return ReactApolloHooks.useMutation<ImportPolicyMutation, ImportPolicyMutationVariables>(
ImportPolicyDocument,
baseOptions
)
Итак, как мне вызвать мутацию внутри обработчика событий?