在使用 Apollo Client 进行数据查询和突变时,有时会遇到突变失效的情况。这可能是由于缺少必需的参数或不正确的语法引起的。为了解决这个问题,可以按照以下步骤进行排除:
const query = gql`
query users($id: Int!) {
users(where: {id: {_eq: $id}}) {
name
email
}
}
`;
const {data} = useQuery(query, {
variables: {id: 1},
});
注意:在这个例子中,查询需要一个整数类型的参数“id”。
const mutation = gql`
mutation addUser($name: String!, $email: String!) {
insert_users(objects: [{name: $name, email: $email}]) {
affected_rows
}
}
`;
const [addUser, { loading, error }] = useMutation(mutation);
const handleAddUser = () => {
addUser({
variables: {
name: 'Bob',
email: 'bob@example.com'
}
})
.then(res => console.log(res))
.catch(err => console.log(err));
}
注意:在这个例子中,突变方法需要传递两个字符串类型的参数“name”和“email”。insert_users 是该突变方法的名称。
如果没有任何错误,但突变仍然无法生效,则可能是由于缓存问题或服务器端出错导致的。在这种情况下,建议清除缓存并重试突变。
清除缓存的代码示例:
import { ApolloClient, InMemoryCache } from '@apollo/client';
const client