6

我正在尝试使用返回包装组件的 HOC 的新上下文 API。Class.contextType = Context当我使用这种方法时它不起作用:

return function myHOC(WrappedComponent) {
  class HOC extends React.Component {
    // static contextType = MyContext;

    render() {
      console.log(this.context);  // HERE, this logs `{}`

      // ..do stuff
      return <WrappedComponent {...this.props} />
    }
  }
  HOC.contextType = MyContext;

  return HOC;
};

但是,我制作了相同的代码,但使用<MyContext.Consumer>它并且效果很好:

return function myHOC(WrappedComponent) {
  const HOC = (props) => (
    <MyContext.Consumer>
      {(context) => {
        console.log(context);  // HERE, correct values

        return <WrappedComponent {...props} /> 
      }}
    </MyContext.Consumer>
  );

  return HOC;
};

我在这里没有看到什么吗?

4

1 回答 1

5

事实证明,即使我将我的 react-scripts 更新为2.0,我也必须自己更新 react to 16.6(以前在 16.3 上)。

我的印象是 react-scripts 也会处理 react 版本。我的不好,在那里很困惑。

于 2018-11-01T23:01:07.263 回答