这个问题通常是由于在使用ApolloClient的useMutation hook时,返回的Promise没有正确处理而导致的。如果Promise没有完成或者失败,React可能会对组件进行多次重新渲染,以避免无限循环。要解决这个问题,我们可以使用async/await或then/catch来正确处理返回的Promise。
示例代码:
import { useMutation } from '@apollo/react-hooks'; import gql from 'graphql-tag';
const CREATE_USER = gql mutation createUser($email: String!, $password: String!) { createUser(email: $email, password: $password) { id email } }
;
function CreateUserForm() { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [createUser, { loading, error }] = useMutation(CREATE_USER);
const handleSubmit = async (e) => { e.preventDefault(); try { const { data } = await createUser({ variables: { email, password } }); console.log(data); // handle successful user creation } catch (err) { console.error(err); // handle error } };
return (
); }