【问题标题】:How to get the react navigator state outside the root react navigator?如何在根反应导航器之外获取反应导航器状态?
【发布时间】:2020-03-04 09:17:30
【问题描述】:

事情是这样的:
我在移动设备上有一个 react-native 应用程序,当用户离开我的应用程序并返回时,我正在尝试执行一些权限检查操作。我想避免在登录屏幕上进行权限检查并考虑到现有的应用程序组件树,我想获取当前路由供我使用。现在,我正在使用 5.x 版本的 react-navigation。


const App = () => {
  useEffect(() => {
    const handleAppStateChange = (): void => {
      // Authority check action
    };
    AppState.addEventListener('change', handleAppStateChange);
  }, []);

  return (
    <Provider store={store}>
      <SafeAreaProvider>
        <SafeAreaView>
          <RootNavigator />
          <OverlayActivityIndicator />
          <ActionSheet />
        </SafeAreaView>
      </SafeAreaProvider>
    </Provider>
  );
}

现在我遇到了问题:
我不知道如何在根导航器之外获取当前路线。

我最后的选择是将当前路由集成到 redux 存储中,这将使我的应用程序更加复杂。

还有其他想法吗?

【问题讨论】:

    标签: javascript reactjs react-native mobile react-navigation


    【解决方案1】:

    You can refer this for getting navigation outside components

    import { NavigationContainer } from '@react-navigation/native';
    import { navigationRef } from './RootNavigation';
    
    export default function App() {
      return (
        <NavigationContainer ref={navigationRef}>{/* ... */}</NavigationContainer>
      );
    }
    
    
    //whereas 
    import * as React from 'react';
    
    export const navigationRef = React.createRef();
    
    export function navigate(name, params) {
      navigationRef.current?.navigate(name, params);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-28
      • 2021-09-24
      • 2021-12-20
      • 1970-01-01
      • 2020-10-23
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多