Context
当我们需要像很多组件共享一些Props的时候,就可以使用Context,但是不要使用太多,使用太多会导致组件的复用性下降。
const { Provider, Consumer } = React.createContext(defaultValue)
解构出来的Provider和Consumer是两个组件,而且这个默认值是当Consumer在上层早不到Provider的时候才会使用,并不是Provider的默认值。
Provider
相当于一个容器,提供基本的值,可以在这里和react的state关联起来,一旦Provider的value发生变化就会导致Consumer刷新,而且需要注意的是Provider的刷新不受shouldComponentUpdate 这个生命周期的影响。
Consumer
使用该组件的时候需要在里面嵌套一个方法,参数为当前的context值,值为和最近的Provider提供的相同,如果上层没有Provider,那么值和defaultValue相同,如下
<Consumer>
{
(value) => {
//根据拿到的value进行相应的处理
}
}
</Consumer>