首页 > 解决方案 > 从不同的堆栈将导航器重置为主页

问题描述

假设我在Profile3。我想重置为Stack1(底部导航器的初始路线)。这怎么可能?我只能重置为Stack3. 但不是Stack1

如果我尝试替换Stack3to Stack1or Bottom1,它将有错误消息。似乎 stackreset 必须来自同一个堆栈导航器?

错误:没有为键 Stack1 定义路由。必须是 Stack3、Profile3 之一

重置代码

import { NavigationActions } from 'react-navigation';

const resetAction = StackActions.reset({
  index: 0,
  actions: [NavigationActions.navigate({ routeName: 'Stack3' })],
});
this.props.navigation.dispatch(resetAction);

导航代码:

  const Stack1 = createStackNavigator(
      {
        Stack1: Home1,
        Profile1: Profile
      }
    );

    const Stack2 = createStackNavigator(
      {
        Stack2: Home2,
        Profile2: Profile
      }
    );


    const Stack3 = createStackNavigator(
      {
        Stack3: Home3,
        Profile3: Profile
      }
    );

    const AppNavigator = createBottomTabNavigator({
        Bottom1: Stack1,
        Bottom2: Stack2,
        Bottom3: Stack3
      }, {
          {
            initialRouteName: 'Bottom1',
     });

  export default createAppContainer(AppNavigator);

标签: react-nativereact-navigation

解决方案


    import { NavigationActions } from 'react-navigation';

    const resetAction = NavigationActions.reset({
      index: 0,
      actions: [NavigationActions.navigate({ routeName: 'Stack1 ' })],
    });
    this.pr

    ops.navigation.dispatch(resetAction);

如果您想重置 1 ,则将其替换Stack3Stack1,并且在调度时它将从索引 0 加载该堆栈

编辑 :

因为我们需要将主堆栈重置为我们需要使用NavigationActions而不是StackActions执行重置

让我知道这是否有效


推荐阅读