【问题标题】:How to keep the "Back" functionality in react navigation when navigating from one tab to another that has a drawer and another screen从一个选项卡导航到另一个具有抽屉和另一个屏幕的选项卡时,如何在反应导航中保持“返回”功能
【发布时间】:2021-08-27 19:14:18
【问题描述】:

我有一个具有以下导航结构的应用。

<TabNavigator>
  <Screen name="HomeTab" component={HomeStackNavigator} /> 
  <Screen name="ProgramTab" component={ProgramStackNavigator} /> 
</TabNavigator>

<HomeStackNavigator>
  <Screen name="Home" component={HomeScreen} /> 
</HomeStackNavigator>

<ProgramStackNavigator>
  <Screen name="Programs" component={ProgramsScreen} /> 
  <Screen name="Edit" component={ProgramEditScreen} /> 
</ProgramStackNavigator>

<ProgramsScreen>
  <DrawerNavigator>
    {programs.map=>((p)=>(
      <Screen name={p.id} component={ProgramPreviewScreen}> 
    ))}
  </DrawerNavigator>
</ProgramsScreen>

我想做的是从主屏幕转到程序编辑屏幕,但要确保抽屉选择在堆栈中。

我只选择了程序抽屉,但没有进行编辑。

navigation.navigate('ProgramTab', {
  screen: 'Programs',
  params: {
    screen: item.programId,
    params: {
      programId: item.programId,
      screen: 'Edit',
      params: {
        programId: item.programId,
      },
    },
 },
});

如果我执行以下操作,除非我先转到“程序”选项卡,否则不会出现“

navigation.navigate('ProgramTab', {
  screen: 'Edit',
  params: {
    programId: item.programId,
  },
 },
});

我认为这是 push 的问题,但它也给出了错误(可能是我使用不正确)。我也尝试了dispatch approach,但它也出错了。

【问题讨论】:

    标签: reactjs react-native react-navigation


    【解决方案1】:

    在尝试了几个不同的场景后,我最终想到了这个。

    navigation.dispatch(
      CommonActions.reset(
        {
          routes: [
          {
            name: 'ProgramTab',
            state: {
              routes: [
                {
                  name: 'Programs',
                  params: {
                    screen: item.programId,
                    params: {
                      programId: item.programId
                    }
                  }
                },
                { 
                  name: 'Edit', 
                  params: { 
                    programId: item.programId
                  }
                }  
              ]
            }
          }
        ]
      })
    );
    

    奇怪的是我不得不结合两种不同的设置技术(一种具有嵌入式屏幕并操纵其中一条路线的实际state

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 1970-01-01
      • 2013-12-19
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 2021-12-03
      • 1970-01-01
      相关资源
      最近更新 更多