在React中使用useMutation的时候,它会触发组件的重新渲染。为了避免这种情况,可以使用useMutation函数的第二个参数options,来手动控制是否重新渲染。
示例代码:
import React from 'react';
import { useMutation } from '@apollo/client';
import { ADD_TODO_MUTATION } from '../queries';
const AddTodo = () => {
const [todo, setTodo] = React.useState('');
const [addTodo, { loading, error }] = useMutation(ADD_TODO_MUTATION, {
variables: { todo },
update(cache, { data: { addTodo } }) {
cache.modify({
fields: {
todos(existingTodos = []) {
const newTodoRef = cache.writeFragment({
data: addTodo,
fragment: gql`
fragment NewTodo on Todo {
id
text
completed
}
`
});
return [...existingTodos, newTodoRef];
}
}
});
},
onError(error) {
console.log(error);
}
});
const handleAddTodo = () => {
addTodo();
setTodo('');
};
return (
setTodo(e.target.value)}
/>
);
};
export default AddTodo;
在上面的示例中,我们在options参数中定义了onError和update函数来处理错误和更新缓存。如果您不需要更新缓存,请删除update函数。
上一篇:ApolloGraphQL头部在iOSSwift中总是导致失败
下一篇:ApolloGraphQLuseQueryreacthooksrenderingerror-whyisuseContextisundefined?