Context

69 阅读1分钟

class 组件

创建context

const ThemeContext=React.createContext()//括号里面是默认值

const ThemeProvider=ThemeContext.Provider
const ThemeConsumer=ThemeContext.Consumer

使用context

 <ThemeProvider value={color:'red'}>
   <HomePage/>
</themeProvider>

<ThemeConsumer>
//通过回调获取值
 {value=><div>{value.color}</div>}
</ThemeConsumer>

获取context class组件要在外部设置contextType


  const {themecolor}=this.context
  HomePage.contextType=ThemeContext

函数组件 在组件内部使用useContext


const Userpage=function(){
const ctx=useContext(ThemeContext)
return(
 <div>
 </div>
)
}

总结 (三种使用context方法) Class.ContextType只能用在类组件上;只能订阅单一context后面会覆盖前面

Context.Consumer嵌套复杂

在文件export context 通过import导入相关context使用

使用context和全局变量的区别 全局变量不可修改

使用context时 context对象变化时 组件会进行重新渲染