首页 > 解决方案 > 如何在 React 中使用 HOC 传递静态 navigationOptions?

问题描述

我想制作一个 HOC 以将 navigationOptions 传递给传递的组件。

const withNavigationOptions = Component => ({ ...props }) => {
  const ComponentWithNavigation = Component;
  ComponentWithNavigation.navigationOptions = ({ navigation }) => {
    const { title } = navigation.state.params;
    return {
      header: (
        <Navbar
          navigation={navigation}
          title={title}
          onBackPress={() => navigation.navigate('Dashboard')}
        />
      )
    };
  };

  return <ComponentWithNavigation {...props} />;
};

export default withNavigationOptions;

但是静态选项没有分配给返回的组件。任何帮助将不胜感激。

标签: javascriptreactjsreact-nativereact-navigationhigher-order-components

解决方案


将 navigationOptions 传递给渲染组件的正确方法是将其作为 props 传递。

const withNavigationOptions = Component => ({ ...props }) => {
  const ComponentWithNavigation = Component;
  const navigationOptions = ({ navigation }) => {
    const { title } = navigation.state.params;
    return {
      header: (
        <Navbar
          navigation={navigation}
          title={title}
          onBackPress={() => navigation.navigate('Dashboard')}
        />
      )
    };
  };

  return <ComponentWithNavigation {...props} navigationOptions={navigationOptions} />;
};

export default withNavigationOptions;

在您的情况下,未将静态选项提供给返回的组件,因为您将其添加到呈现的组件而不是返回的功能组件上。


推荐阅读