Javascript 在函数组件中响应导航getParams

Javascript 在函数组件中响应导航getParams,javascript,node.js,reactjs,react-native,react-navigation,Javascript,Node.js,Reactjs,React Native,React Navigation,问题摘要 我正在React Navigation中使用功能组件,并且正在使用NavigationService.Navigation从我根据其创建的NavigationService组件进行导航。我需要将参数传递到目标,我可以这样做,但我不知道如何在目标屏幕中检索参数 我想我只需要在我的NavigationService.js文件中添加一些东西,但我不确定应该是什么,而且在他们的文档中找不到 代码 启动屏幕中的代码 import NavigationService from "~/app/ser

问题摘要

我正在React Navigation中使用功能组件,并且正在使用NavigationService.Navigation从我根据其创建的NavigationService组件进行导航。我需要将参数传递到目标,我可以这样做,但我不知道如何在目标屏幕中检索参数

我想我只需要在我的NavigationService.js文件中添加一些东西,但我不确定应该是什么,而且在他们的文档中找不到

代码

启动屏幕中的代码

import NavigationService from "~/app/services/NavigationService";
onPress={() => NavigationService.navigate("CompScreen", { comp })}
NavigationService.js

import {
  NavigationActions,
  DrawerActions,
  StackActions
} from "react-navigation";

let navigator;

/**
 * @function setTopLevelNavigator
 * @param  {ref} navigatorRef
 */
function setTopLevelNavigator(navigatorRef) {
  navigator = navigatorRef;
}

/**
 * @function navigate
 * @param  {string} routeName
 * @param  {any} params
 */
function navigate(routeName, params) {
  navigator.dispatch(
    NavigationActions.navigate({
      routeName,
      params
    })
  );
}

/**
 * @function goBack
 * @param {}
 */
function goBack() {
  navigator.dispatch(NavigationActions.back());
}

/**
 *
 * @function navigateAndReset
 * @param routeName
 * @param params
 */

//this is to reset the navigation stack.
function navigateAndReset(routeName, params) {
  navigator.dispatch(
    StackActions.reset({
      index: 0,
      key: null,
      actions: [
        NavigationActions.navigate({
          routeName,
          params
        })
      ]
    })
  );
}

/**
 * @function openDrawer
 */
function openDrawer() {
  navigator.dispatch(DrawerActions.openDrawer());
}
/**
 * @function closeDrawer
 */
function closeDrawer() {
  navigator.dispatch(DrawerActions.closeDrawer());
}
/**
 * @function toggleDrawer
 */
function toggleDrawer() {
  navigator.dispatch(DrawerActions.toggleDrawer());
}

export default {
  navigate,
  openDrawer,
  closeDrawer,
  toggleDrawer,
  goBack,
  navigateAndReset,
  setTopLevelNavigator
};

您不需要进一步的配置。如果您想访问直接连接到导航器的屏幕的道具,只需执行此操作即可

 const { navigation } = this.props;
 const itemId = navigation.getParam('comp', {});
如果是不同的屏幕或组件,请将
导航
道具传递给相关组件并访问它

更多信息: