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

Posted

技术标签:

【中文标题】React Native Navigation:从 React 组件外部导航到屏幕【英文标题】:React Native Navigation: Navigate to a screen from outside a React component 【发布时间】:2021-08-19 14:08:21 【问题描述】:

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

【问题讨论】:

【参考方案1】:

我最终添加了一个命令事件侦听器以将当前的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,
      ,
    );
  );
);

【讨论】:

以上是关于React Native Navigation:从 React 组件外部导航到屏幕的主要内容,如果未能解决你的问题,请参考以下文章

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

无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置

React-native 组件缓存(或防止卸载)(react-navigation)

如何从react-navigation获取主题类型(Typescript)

React Native、Navigation 实验动画

react-native navigation的学习与使用