开发者问题收集

如何仅使用导航参考来推动屏幕

2020-09-30
2842

使用 react-navigation 库,当您位于堆栈导航器的一部分的屏幕上时,可以使用 props.navigation.push(route name, params)。我想实现同样的事情,能够推送一个新屏幕,但从我获取 NavigationContainer 引用的根级别开始。

所以我有这个代码

   <NavigationContainer ref={navigationRef}>
       ... 
   </NavigationContainer>

我想做类似的事情

   navigationRef.push(routeName, params);

不幸的是,我这里没有推送方法。有解决方法吗?

1个回答

您可以像这样设置一个 RootNavigation.js 文件:

import * as React from 'react';
import { StackActions } from '@react-navigation/native';

export const navigationRef = React.createRef();

export function push(...args) {
  navigationRef.current?.dispatch(StackActions.push(...args));
}

然后您可以像这样使用它:

import {navigationRef} from './path/to/RootNavigation';

<NavigationContainer ref={navigationRef}>
  {/* content */}
</NavigationContainer>

以及这个:

import * as RootNavigation from './path/to/RootNavigation';

RootNavigation.push('Screen', { data: '...' })

来源: https://reactnavigation.org/docs/navigating-without-navigation-prop/

bas
2020-09-30