Давайте согласимся, что мы ❤ используем крючки React, и использование крючков Apollo React работает как шарм.

Недавно работая над проектом с React и GraphQL, моя команда почувствовала необходимость иметь обратный вызов onSuccess() в дополнение к параметрам onError() и onCompleted().

Потратив несколько часов на отладку, я обнаружил, что onCompleted()

  • работает по-разному в зависимости от errorPolicy.
  • не зависит от того, есть ли успешный ответ.
  • также вызывается, когда сервер отправляет частичные данные или не отправляет данные с ошибками.

Я обнаружил, что документация немного вводит в заблуждение, и, что интересно, я также видел pull request для изменения формулировок :)

Я придумал эту функцию-оболочку, чтобы сохранить ошибку в локальном состоянии, а затем использовать ее для запуска onSuccess().

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

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