更新
从React v16.6.0 开始,您可以使用上下文 API,例如:
class App extends React.Component {
componentDidMount() {
console.log(this.context);
}
render() {
// render part here
// use context with this.context
}
}
App.contextType = CustomContext
但是,组件只能访问单个上下文。为了使用多个上下文值,请使用渲染道具模式。更多关于Class.contextType。
如果您使用的是实验性的公共类字段语法,您可以使用静态类字段来初始化您的contextType
:
class MyClass extends React.Component {
static contextType = MyContext;
render() {
let value = this.context;
/* render something based on the value */
}
}
渲染道具图案
当我从问题中了解到,要在组件内部但在渲染外部使用上下文时,请创建一个 HOC 来包装组件:
const WithContext = (Component) => {
return (props) => (
<CustomContext.Consumer>
{value => <Component {...props} value={value} />}
</CustomContext.Consumer>
)
}
然后使用它:
class App extends React.Component {
componentDidMount() {
console.log(this.props.value);
}
render() {
// render part here
}
}
export default WithContext(App);