Отказаться от обработки сетевого запроса при размонтировании компонента - PullRequest
1 голос
/ 08 марта 2019

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

Вмое реагирующее на родство приложение, я делаю много сетевых запросов, выполнение которых может занять много времени.Каждый запрос обрабатывается двумя основными способами:

  • Запрос успешно выполнен.Глобальное состояние избыточности / потока обновляется, и поэтому обновляются и вложенные компоненты.
  • Запрос выдает ошибку.Ошибка сети, ошибка сервера, ошибка 400, что угодно.В этом случае пользователю необходимо отобразить сообщение в форме сообщения, отображаемого на экране, или в виде предупреждения.

Моя проблема заключается в том, что, когда компонент отключен, извлекаются обратные вызовыобрабатываются в любом случае, когда запрос завершается.В первом случае это не проблема: магазин обновляется успешно, и все довольны.

Во втором случае это проблема, потому что:

  • Предупреждениебудет отображаться на другом экране, что неправильно и приводит к проблемам с компонентом Modal, который я использую для представления предупреждений об ошибках.
  • Появление / исчезновение сообщения об ошибке контролируется компонентом LOCALсостояние, которое не может быть обновлено на несмонтированном компоненте и поэтому выдает ошибку.

Какие у меня есть возможные решения здесь?Самый простой способ - использовать в каждом компоненте свойство _isMounted, а в каждом обработчике ошибок выборки ничего не делать, если _isMounted == false.Тем не менее, этот подход многословен и антипаттерн.

Есть ли у меня другой вариант?

1 Ответ

0 голосов
/ 08 марта 2019

Если вы используете react-navigation Я полагаю, что вы могли бы вычесть состояние в действиях, а не вызывать оповещение.

Я предлагаю вам передать метод навигации в метод действия и вывести там состояние навигации ивызывайте оповещение по мере необходимости.

...