У меня есть задача глобально слушать изменение селкторов (const someSelector = useSelector(someModule.someSelector)) для взаимодействия с интерфейсом. Условный пример - есть модальное окно которое может быть показано на любой из страниц приложения. Это модальное окно ориентируется на данные из селектора.
Так как в rnn нет рутового компонента, нет возможности повесить слушателей/селекторы в руте. И при этом делать обертку/hoc для каждого экрана - это плодить модальные окна и слушателей селекторов - очень плохо 🙂
Может кто сталкивался с задачей подобной, подскажите решение.
Сделал в сторе поле showModal Добавил на нужные экраны компонент модального окна, который в зависимости от этого поля показывается или скрывается. И добавил проверку что скрин в фокусе, чтобы не срабатывали сразу все.
Судя по всему использовался mobx?
Если таких десять модалок. Это будет совсем грустно.
Все разные? Сделать лучше одно модальное окно и управлять его содержимым
в react-native-navigation есть оверлей которым ты можешь перекрыть все экраны, просто слушателя в корень пропиши и открывай/закрывай оверлей по надобности
у меня просто была дополнительная сложность: окно должно быть не на всех экранах
В какой корень? У rnn нет корня приложения в отличии от rn, где есть рут компонент и можно повесить обычный компонент в котором все слушатели и модалки.
Так-то hoc можно использовать для тех экранов где нужна модалка. Это можно делать на уровне когда регистрируются экраны. Так же как если бы мы оборачивали в редакс-провайдер экраны.
можешь повесить там же где у тебя происходит первая инициализация, сам так делал
Это как так? Кажется useSelector() не доступен в вакууме. Копонент должен быть обернут в редакс провайдер, разве не так?
для оверлея не нужен редакс, там методы есть
overlay
Так это понятно. Но метод вызывать надо на основании изменения селектора. Сам селектор куда повесить чтобы слушать его изменения и глобально вызвать оверлей?
Тут уже СТМ проблема) С редакс давно не работал, но помню что там есть subscribe на весь стор, или же в компоненте проверка, больше вроде никак
Обсуждают сегодня