重置嵌套在我的抽屉导航器中的堆栈

时间:2020-06-18 12:48:13

标签: android react-navigation navigation-drawer stack-navigator

目标

当前,我有一个抽屉,上面有我的各种路线

Main - Drawer Stack nav
   A - Stack nav
   B - Stack nav

当用户单击嵌套在抽屉组件中的按钮时,我想替换A - Stack nav中的路由。

有没有人知道如何实现这一目标?我已经尝试过使用CommonActions,但是它们似乎只会影响抽屉堆栈,而不是嵌套的堆栈

1 个答案:

答案 0 :(得分:0)

我设法使用下面的代码解决了问题

navigation.dispatch((state:any) => {
  const index = 2;
  const routes = state.routes.filter((r:any) => r.name !== 'people');
  routes.splice(index, 0, {name:'people'});
  return CommonActions.reset({
    ...state,
    routes,
  });
});
navigation.navigate('people')

因此,用户从抽屉组件中按下一个按钮,该按钮将执行以下操作

  1. 获取状态
  2. 删除名为people的路线
  3. 接合新对象{name:"people"}
  4. 执行CommonActions.reset

名为people的路由现在已刷新,并从头开始。

-注意---将index更改为路线索引。

这可能不是一个干净的方法,我很想知道一个更好的解决方案。