更新
暂时更改为使用DrawerNavigator
作为 root ,但仍然想知道是否可以使用StackNavigator
作为root,但行为类似于tabs
或drawers
。
我正在使用reactnavigation v5。
我有以下设置:
<RootStack.Navigator initialRouteName={'SplashNavigator'}>
<RootStack.Screen name={'SplashNavigator'} component={SplashStackNavigator} options={{headerShown: false}} />
<RootStack.Screen name={'DrawerNavigator'} component={DrawerNavigator} />
</RootStack.Navigator>
我从SplashNavigator
开始navigation.navigate('DrawerNavigator', {screen:'Home'})
但是,页眉具有一个后退按钮,可导航回初始屏幕。
有没有办法重置历史记录,以便将DrawerNavigator
用作主要导航器?
曾在HomeScreen中尝试过StackActions.replace
,但由于某种原因它无法识别屏幕。
const HomeScreen = ({navigation}) => {
useEffect(() => {
navigation.dispatch(state => {
console.log(state);
return StackActions.replace('Home')
});
}, []);
...
ExceptionsManager.js:173 The action 'REPLACE' with payload {"name":"Home"} was not handled by any navigator.
但我确实看到了该州的路线
"routeNames": [
"Home",
"Promotions"
],
也尝试过CommonActions.reset()
,但没有任何改变。
const HomeScreen = ({navigation}) => {
useEffect(() => {
navigation.dispatch(state => {
console.log(state);
return CommonActions.reset({...state, key:null})
});