javascript - React HOC 在 Lifecycle 方法中使用 Context API

标签 javascript reactjs

我正在尝试创建一个React HOC来访问生命周期方法中的上下文。

我收到以下错误...

(0, _withContext.withContext) 不是函数。 (在“(0, _withContext.withContext)(TestScreen)”中,“(0, _withContext.withContext)”未定义)

错误很可能在于我编写 withContext HOC 的方式。我是编写 HOC 代码的新手。可以帮助指出我的 HOC 的错误在哪里吗?谢谢

在 withContext HOC 中

import { MyContext } from "../context/MyProvider";

const withContext = Component => {
  return props => {
    <MyContext.Consumer>
      {context => {
        return <Component {...props} context={context} />;
      }}
    </MyContext.Consumer>;
  };
};

在 TestScreen.js

  componentDidMount() {
    console.log(this.props.context);
  }

export default withContext(TestScreen);

最佳答案

您尚未导出 withContext 函数,因此使用它时会出错

export const withContext = Component => {
  return props => {
    <MyContext.Consumer>
      {context => {
        return <Component {...props} context={context} />;
      }}
    </MyContext.Consumer>;
  };
};

然后像这样导入

import { withContext } from 'path/to/withContext'

关于javascript - React HOC 在 Lifecycle 方法中使用 Context API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51020888/

相关文章:

javascript - 在 React 项目中从 Typescript 迁移

javascript - map() 中的两个导入 div

reactjs - React - 如何将状态传递给另一个组件

javascript - 提交链接,无需刷新,无需ajax

javascript - 从 javascript 链接到 .cshtml View

javascript - 在 ng-repeat 中绑定(bind)字符串数组的两种方式

javascript - JS getElementsByTagName 除了具有特定类的

javascript - 仅在一个元素内覆盖滚动功能

javascript - 如何动态地将API数据传递到MongoDB数据库

javascript - Redux 返回默认值