Реагировать - Новый Context API не работает с Class.contextType, но работает с Context.Consumer

Я пробую новый контекстный API, используя HOC, который возвращает упакованный компонент. Это не работает, когда я использую 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;
};

Я что-то здесь не вижу?

1 ответ

Решение

Оказывается, что хотя я обновил свои реагирующие скрипты на 2.0Пришлось обновлять реагировать на 16.6 (ранее на 16.3) самостоятельно.

У меня сложилось впечатление, что реакции-скрипты также будут обрабатывать версию реакции. Мой плохой, запутался там.

Другие вопросы по тегам