React Native Navigation:从 React 组件外部导航到屏幕

React Native Navigation: Navigate to a screen from outside a React component

https://wix.github.io/react-native-navigation/docs/basic-navigation#navigating-in-a-stack 表示将新屏幕推入堆栈需要当前屏幕的componentId。我的用例是允许基于本机模块发出的某些事件进行导航。因此,componentId 对我不可用,因为事件侦听器将驻留在任何 React 组件屏幕之外。在 RNN 中有什么方法可以从外部导航到屏幕吗?或者甚至获取当前的 componentId.

我最终添加了一个命令事件侦听器来将当前 componentId 存储在闭包中。

let currentComponentId;

Navigation.events().registerCommandListener((name, params) => {
  if (name === 'push') {
    currentComponentId = params.componentId;
  }
});

Navigation.events().registerAppLaunchedListener(() => {
  Navigation.setRoot(rootRouteConfig);

  EventEmitter.addListener('navigate', (name) => {
    Navigation.push(currentComponentId, {
      component: {
        name,
      },
    });
  });
});