作用
- Context提供了一个无需为每层组件手动添加props,就能在组件之间进行数据传递的方法,从而避免了在每一个层级手动的传递 props 属性。
目的
应用场景
数据流对比

图片来源
React.createContext
- 创建一个上下文的容器(组件)
- defaultValue: 设置共享的默认数据
const {Provider, Consumer} = React.createContext(defaultValue);
useContext
const context = useContext(MyContext);
return <h1> {context} </h1>
Provider
<MyContext.Provider value={/*共享的数据*/}>
/*里面可以渲染对应的内容*/
<App />
</MyContext.Provider>
Consumer
- 作用:消费Provider产生的数据
- 位置: 嵌套在Provider下面,通过回调方式拿到共享数据
<MyContext.Consumer>
}
{value => {
<h1>
the value props passed from Provider was{value}
</h1>
}}
</MyContext.Consumer>
上文参考
注意
- 如果需要修改Context的值,应该统一由Provider修改
- 谨慎使用,因为这会让组件复用性变差