Ответ 1
Использование контекстного API, как вы использовали в вашем случае, поддерживается до версии 16.3.0 и после 16.6.0.
API немного изменился с 16.3.0 на 16.6.0, где вам нужно использовать шаблон поддержки Consumer render, но позже он был усовершенствован для поддержки шаблона contextType, чтобы разрешить использование Context в методе жизненного цикла.
Если вы используете API, как вы упомянули выше, убедитесь, что вы используете версию React выше 16.6.0
Если вы используете версию между 16.3.0 и 16.6.0, используйте Context как
class MyClass extends React.Component {
componentDidMount() {
let value = this.props.context;
/* perform a side-effect at mount using the value of MyContext */
}
componentDidUpdate() {
let value = this.props.context;
/* ... */
}
componentWillUnmount() {
let value = this.props.context;
/* ... */
}
render() {
let value = this.props.context;
/* render something based on the value of MyContext */
}
}
export default (props) => (
<MyContext.Consumer>
{(context) => <MyClass {...props} context={context}/>}
</MyContext.Consumer>
)