Я столкнулся с той же проблемой несколько месяцев назад. Слава богу, что вы потратили всего 6 часов, я почти потратил около 4 дней, чтобы найти решение.
Что касается вопроса, учтите, что в реагирующей навигации вы можете перейти к классам братьев и сестер или детей.
Итак, у вас есть swtichNavigator, который содержит 2 стековых навигатора (скажем, стека 1 и стека 2), stack1 имеет фиды, а stack2 имеет навигатор вкладок с логином и регистрацией.
Теперь вы хотите перейти от login.js к feeds.js (скажем, имя файла - feeds.js). Как уже упоминалось, вы не можете перейти обратно к родителю или прародителю. Тогда как решить эту проблему?
В реагировать на нативный язык вы имеете право передавать params (screenprops) от родителя к детям. Используя это, вам нужно сохранить this.props.navigation
launchScreen в переменную и передать ее в tab / login (проверьте древовидную структуру). Теперь в файле login.js используйте эту переменную для навигации.
Вы просто передаете привилегию навигации от родителя к детям.
Редактирование здесь:
<InnerTab screenProps={{rootNavigation : this.props.navigation }} />
Здесь InnerTab - это навигатор по вкладкам.
export const InnerTab = TabNavigator({
login: {
screen: login,
},
},
signup: {
screen: signup,
},
},
},
в классе входа, используйте const { navigate } = this.props.screenProps.rootNavigation;
Теперь вы можете использовать переменную navigate
.
Я знаю, это немного сложно понять, но я пытался, и это работает.