Компонент презентации кэшируется при перемещении между экранами - PullRequest
0 голосов
/ 13 июня 2019

Я создаю реактивное приложение, в котором все экраны имеют одинаковую общую функциональность, такую ​​как 1. Создание ajax-запросов 2. Преобразование ключей snake_case в camelCase 3. Показывает индикатор загрузки при получении данных 4. Подпишитесь на магазин избыточных данных и выставляйтесохранить как реквизитredux

реагировать-навигация

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

const fetchUrls = store => return [url, url];
return MycontainerComponent(WrapperComponent)(fetchUrls);

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

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

Теперь, когда я переключаю пользователя, я обновил хранилище с избыточностью и подумал, что он будет перерисовывать вещи, и все будет хорошо.Пока я не столкнусь с реальностью.

Когда я переключаю пользователя, создается впечатление, что компонент пытается одновременно размонтировать и извлечь URL-адреса для новых значений магазина и реагировать на жалобы с типичным «не устанавливать вcomponentwillunmount, запретить, отписаться и т. д. "

Я понятия не имею, что происходит, может кто-нибудь пролить свет на это.Спасибо.

1 Ответ

1 голос
/ 26 июня 2019

С помощью стекового навигатора экраны не отключаются после потери фокуса.Это оптимизация производительности.Если вы хотите выполнить логику, когда экран восстанавливает фокус, поместите логику в NavigationEvents onWillFocus или onDidFocus.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...