重置反应导航堆栈历史记录

时间:2020-04-16 10:04:49

标签: react-navigation react-navigation-stack

更新

暂时更改为使用DrawerNavigator作为 root ,但仍然想知道是否可以使用StackNavigator作为root,但行为类似于tabsdrawers


我正在使用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})
    });

0 个答案:

没有答案