Серч.
Но могу сделать это только с navigate. Мне не подходи, так как потом не могу сделать гоу бек, Как перейти использывая push? есть ли вообще такая возможноть?
Я обычно в контекст пишу для search что то вроде showSearch ТК это на каждой странице. А сам компонент прямо в навигаторе перед hoc проверяю. Думаю можно и в hoc Layout это засунуть - но это не правильно будет с ТЗ архитектуры
-TAB_1 --SCREEN_1 -TAB_2 --SCREEN_2 Вопрос как перейти со скрина 2, на скрин 1 с помощью push? Т.е. с помощью navigate я могу сделать navigation.navigate(TAB_1, { screen: SCREEN_1}) А с помощью push никак нельзя?
Я не понимаю вложенность. Сори. Ты же таким образом в навигатор параметр передаешь. Что ты получить хочешь?
А зачем именно с помощью push? Он же семантически добавляет в стек. Можно получить SCREEN_1 в стеке TAB_2 с помощью push. Если в этом вопрос.
Вопрос в том, что когда я перехожу вот так navigation.navigate(TAB_1, { screen: SCREEN_1}) То кнопка бек не видеть назад, так как я в стек теоретически не добавляю этот роут Т,е я был на Таб 2 Скрин 2, иду на ТАб 1 Скрин 1, и там когда нажимаю назад хочу вернуть в Скрин 2, но этого не происходит, так как я не добавил роут в стек. Поэтому нужно использывать пуш. Но не могу решения найти как пушом перейти в другую табу
Нельзя, ты же сохраняешь только путь, а не параметр. Опять же 7 бед один ответ - в контексте ты можешь сохранять что угодно на все случаи жизни. Я бы если мне так нужно было не заморачивался а сохранял prevScreen - правда тогда надо в юз эффект если не ошибаюсь вернуть функцию которая перед дестроем будет ставить этот параметр и проверять что если параметра нет и в параметре и в контексте, if () {return (jsx)} те дефолтный скрин. Но имхо ты неправильно очень навигацию построил.
Воот, это уже причина и реальная задача. А именно – надо спроектировать навигацию так, чтоб можно было возвращаться назад с SCREEN_2 на SCREEN_1. Но это точно не конфликтует с табами, зачем они там? Если что – на самом деле табы реально совместить со сквозной историей, но это будет очень-очень сложно сделать удобно и красиво. Технологически, то, что вы хотите просто подразумевает добавление SCREEN_1 в стек TAB_2, и этот SCREEN_1 не будет иметь никакого отношения к SCREEN_1 на TAB_1, это будет совсем другой скрин, просто так же выглядящий и с тем же кодом
Короче. В контекст перед дестроем сохраняй, но в каждом компоненте где возможен параметр у тебя должен быть дефолтный. А в дестрое уже сам дестрое (функция к-ю юз эффект возвращает) уже сам думай - надо обнулить prevScreen в контексте или записать параметер. Но лучше имхо навигацию переделать чем так городить
И вопрос будет только в том чтобы раздробить на компоненты чтоб не копировать все (и чтоб если потом компонент изменится то одинаковый на обоих был)
Короче если по этому пути уродливому идти, то чтоб определить скрин надо по приоритету проверять Параметр есть - скрин/ нет- дальше Контекст есть -скрин / нет-дальше А дальше уже остаётся 1 дефолтный Но это реально очень убогий путь, проще навигацию переделать
А точно нужны такие костыли? backBehavior не проверяли как в вашем случае будет работать?
Обсуждают сегодня