Реагировать - Новый 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) самостоятельно.
У меня сложилось впечатление, что реакции-скрипты также будут обрабатывать версию реакции. Мой плохой, запутался там.