Исходя из фона Vue.js, я сталкивался с компонентами, которые размонтировались каждый раз, когда вы переходили к другому маршруту/компоненту. Итак, как вы можете видеть, использование методов жизненного цикла, таких как mounted или created, было распространенным шаблоном для повторного запуска логики, если это необходимо. Вам может понадобиться это, например. в ленте новостей, если вы возвращаетесь к ленте с экрана элемента ленты и вам нужно показать новейшую ленту из вашего API.

Итак, вернемся к React Native. Я оказался в этом новом сценарии, когда компоненты не монтируются/не монтируются с экрана на экран. Так что делать? Оказывается, проблема была в навигации.

Я использую React Navigation, который позволяет создавать события для отображения компонентов, которые на них подписаны. Благодаря этой функциональности вы можете использовать событие, которое вам больше всего подходит. Вы получаете willFocus, didFocus, willBlur и didBlur.

В моем конкретном случае использования мне нужно было выполнить повторную загрузку при возврате с предыдущего экрана. Когда пользователь нажимал эту кнопку «Назад», мне нужно было отразить изменения, поэтому я использовал willFocus для получения сразу, до начала рендеринга.

Я подумал об использовании willBlur на экране элемента канала, прежде чем вернуться к основному каналу, сохранив ответ на выборку в магазине, но willFocus работал очень хорошо.

Переходя к делу, чтобы решить, что вам нужен один лайнер:

this.props.navigation.addListener( "willFocus", e => this.fetch())

Вы можете вызвать этот слушатель для нового свойства вашего класса или в методе жизненного цикла.

Как вы извлекаете, как всегда, зависит от вас, но с React Navigation и слушателями повторная загрузка становится простой и понятной.

Существуют и другие варианты использования, в которых такие решения, как QueryRenderer от Relay, будут тем, что вам нужно. Это может включать более сложные сценарии, такие как необходимость извлечения переднего/фонового плана, но на данный момент и для меня это было все, что мне было нужно. Надеюсь, это поможет и вам. Удачной перепрошивки.