Необработанный отказ (ошибка): сообщение не должно быть пустым

Я обрабатываю ошибку с помощью метода обработки ошибок useMutation, однако после того, как я пытаюсь проверить обработку ошибок, публикуя пустой пост, он показывает ошибку в пользовательском интерфейсе, а затем сразу после того, как приложение прерывается, и я получаю указанную выше ошибку.

const [createPost, { error }] = useMutation(CREATE_POST_MUTATION, {
variables: values,
update(proxy, result) {
  const data = proxy.readQuery({
    query: FETCH_POSTS_QUERY,
  });

  let newData = [...data.getPosts];
  newData = [result.data.createPost, ...newData];
  proxy.writeQuery({
    query: FETCH_POSTS_QUERY,
    data: {
      ...data,
      getPosts: {
        newData,
      },
    },
  });
  values.body = '';
}
});

''

{error && (
    <div className = "ui error message" style = {{ marginBottom: 20 }}>
      <ul className = "list">
        <li>{error.graphQLErrors[0].message}</li>
      </ul>
    </div>
  )}

🤔 А знаете ли вы, что...
React поддерживает локализацию и мультиязычность.


1
480
2

Ответы:

Решено

Я нашел свое решение здесь Обработка ошибок с помощью хука react-apollo useMutation

ПРИМЕЧАНИЕ. Хотя вы можете использовать открытое состояние ошибки для обновления своего пользовательского интерфейса, это не заменяет фактическую обработку ошибки. Вы должны либо предоставить обратный вызов onError, либо перехватить ошибку, чтобы избежать предупреждений о необработанном отклонении промиса.


Или другой способ: вы можете отключить кнопку, которая не вызовет ошибки. Если в теле нет текста, кнопка не будет активной. Он не будет активен, если есть только пробелы.

<Button disabled = {!values.body.trim()} type = "Submit" color = "teal">
  Submit
</Button>