3
登錄後(歡迎使用)用戶導航到首頁後,我重置歷史記錄,以便用戶不能像這樣回去:使用反應導航將導航歷史記錄重置爲登錄屏幕
const actionToDispatch = NavigationActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Home' })]
});
this.props.navigation.dispatch(actionToDispatch);
此功能正常。按下注銷後,用戶應該返回歡迎頁面,但它不起作用。以下是我在做什麼:
const resetAction = NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'Welcome' }),
]
});
this.props.navigation.dispatch(resetAction);
該錯誤說明沒有「歡迎」路線。必須是「主」,「隱私」,「條款」之一,這是主頁中某個選項卡的路線。看到他們在下面:
const AppStack = StackNavigator({
Welcome: {
screen: Welcome
},
Home: {
screen: Tabs
}
}, {
initialRouteName: this.state.isLoggedIn ? 'Home' : 'Welcome',
headerMode: 'none'
}
);
export const ProfileStack = StackNavigator({
Profile: {
screen: Profile,
},
});
export const SettingsStack = StackNavigator({
Settings: {
screen: Settings,
},
}, {
});
export const InfoStack = StackNavigator({
Main: {
screen: Main,
},
Privacy: {
screen: Privacy
},
Terms: {
screen: Terms
}
});
const routeConfiguration = {
Profile: { screen: ProfileStack },
Settings: { screen: SettingsStack },
Info: { screen: InfoStack }
};
const tabBarConfiguration = {
tabBarOptions: {
activeTintColor: 'white',
inactiveTintColor: 'lightgray',
labelStyle: {
fontSize: Normalize(10),
fontFamily: Fonts.book
},
style: {
backgroundColor: Colors.greenLightGradient,
borderTopWidth: 1,
borderTopColor: Colors.tabGreenLine
},
}
};
export const Tabs = TabNavigator(routeConfiguration, tabBarConfiguration);
我有相同的代碼,但它不適合我。這隻適用於StackNavigator嗎?我正在使用TabNavigator。 –
是的,我認爲它不適用於TabNavigator。但是你應該再次檢查,因爲這是幾個月前我最後檢查的時候。 – jazzdle
我也發現這對我不起作用,在這裏創建了一個問題:https://stackoverflow.com/questions/45575437/react-navigation-preventing-going-back-to-loading-screen?noredirect=1# comment78111975_45575437 –