對不起,如果有明顯的解決方案,但我沒有找到反應導航的文檔非常清楚,這是令人沮喪的,因爲它現在被呈現爲官方反應本地導航庫。React導航 - 在受保護視圖的不同StackNavigators之間導航
在我的索引文件中,我調用asynstorage來檢索登錄時生成的訪問令牌。然後,我想要返回一個受保護的堆棧,如果登錄或歡迎堆棧如果沒有。
render() {
if (this.state.isLoggedin === true) {
return <Protected />;
}
else {
return <Root />;
}
}
這裏是我的路由器
export const Root = StackNavigator({
Welcome: { screen: Welcome },
Login: { screen: Login },
Register: { screen: Register }
});
export const Protected = StackNavigator({
Conversations: { screen: Conversations }
});
當我重新加載應用程序這是工作。我不明白的是如何在按下時從「根」導航到「受保護」,我不希望這些路由在同一個StackNavigator中。有沒有辦法做到這一點,或者我需要改變整個結構,並且在一個stacknavigator下同時擁有Root和Protected?
再次對不起,如果這是顯而易見的,但我已經建立了一個聊天應用程序使用反應本機Navigator之前,它已被棄用,並沒有發現它幾乎令人困惑。我覺得應該有更好的文檔和例子來說明如何構建真實世界的應用程序。
感謝Martin,我明白我可以在主堆棧導航器中放置根和受保護的視圖,只隱藏後退按鈕,但聽說有關於此操作的Android後退按鈕存在問題,我不認爲我真的瞭解什麼重置正在做,並閱讀一些關於它的github問題,所以想看看是否有更好的方法。我希望我可以做一些像'this.navigation.navigate(受保護)'或'this.navigation.navigate(Conversations)'從根,但我想這不可能 – user3010268