将导航器从其他堆栈重置为主页

问题描述 投票:0回答:2

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

如果我尝试将Stack3替换为Stack1Bottom1,则会出现错误消息。看来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-native react-navigation
2个回答
0
投票
    import { NavigationActions } from 'react-navigation';

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

    ops.navigation.dispatch(resetAction);

如果要重置1,然后将Stack3替换为Stack1,则在分派时它将从索引0加载该堆栈

编辑:

由于我们需要将主堆栈重置为我们需要使用NavigationActions而不是StackActions来执行重置,所以>

让我知道是否可行


0
投票

尝试从任何要重置堆栈的位置尝试用stack1替换重置中的stack3:

© www.soinside.com 2019 - 2024. All rights reserved.