Давайте согласимся, что мы ❤ используем крючки React, и использование крючков Apollo React работает как шарм.
Недавно работая над проектом с React и GraphQL, моя команда почувствовала необходимость иметь обратный вызов onSuccess() в дополнение к параметрам onError() и onCompleted().
Потратив несколько часов на отладку, я обнаружил, что onCompleted()
- работает по-разному в зависимости от errorPolicy.
- не зависит от того, есть ли успешный ответ.
- также вызывается, когда сервер отправляет частичные данные или не отправляет данные с ошибками.
Я обнаружил, что документация немного вводит в заблуждение, и, что интересно, я также видел pull request для изменения формулировок :)
Я придумал эту функцию-оболочку, чтобы сохранить ошибку в локальном состоянии, а затем использовать ее для запуска onSuccess().
Кроме того, мы используем эту оболочку для обработки известных внутренних ошибок, требующих некоторого контекста, и для обработки других общих ошибок с ошибкой ссылки на аполлон. Затем мы помещаем эти ошибки в централизованную очередь ошибок, чтобы отобразить ошибки в пользовательском интерфейсе и убедиться, что он не отображает повторяющиеся ошибки.
Оболочка с сохранением состояния useMutation может быть извлечена в функцию и повторно использована, если есть возможность использовать ее для других хуков.