Работает ли onCompleted с useMutation?

Я использую ловушку useMutation в реактивном проекте. Мутация проходит успешно, но потом не завершается.

Я установил для notifyOnNetworkStatusChange значение true в мутации, но это, похоже, не помогает.

const [createUser] = useMutation(SIGNUP_MUTATION);

createUser({
  variables: {
     firstname,
     lastname,
     email
  },
  notifyOnNetworkStatusChange: true,
  onCompleted: (data) => {
     // not called
     confirm(data);
  }
});

2 ответа

Решение

Глядя на API useMutation, кажется, что вы используете onCompleted в неправильном месте. это должно быть частью useMutation определение.

  const [createUser] = useMutation(
    SIGNUP_MUTATION,
    {
      onCompleted(data) {
        confirm(data);
      }
    }
  );

  return (
    <div>
      <form
        onSubmit={e => {
          e.preventDefault();
          createUser({ variables: { firstname, lastname, email } }); // assuming `firstname`, `lastname` and `email` are defined somewhere.
        }}
      >
        <input type="text" />
        <button type="submit">Signup</button>
      </form>
    </div>
  );

Пару лет спустя - теперь мы можем это сделать:

      const [saveFormData] = useMutation(SAVE_FORM_DATA_MUTATION);

saveFormData({
    variables: {
        myVariable: 'test variable'
    },
    update: (cache, data) => {
        //do updates here
    }
})
Другие вопросы по тегам