【每日一题】React里的context
人生苦短,总需要一点仪式感。比如学前端~
Context 有哪些属性?
createContext
创建 Context 对象Provider
将 context 的值传递给消费组件contextType
挂载在组件上,属性会被赋值为由React.createContext()创建的 Context 对象,可以使用 this.context 来消费最近 Context 上的那个值Consumer
订阅 context 的变更,需要函数作为子元素displayName
作为 context 的属性,ReactDevTools 使用该字符串来确定 context 要显示的内容
怎么使用 Context 开发组件?
父组件创建 Context,子组件可以通过指定 contextType 拿到最近父组件的 context 使用生产消费模式的 Provider 包括子组件,子组件通过 props 获取 context 使用 Consumer, 接收回调函数,可以拿到 context
除了实例的属性可以获得 Context 外,哪些地方还能直接获取 Context ?
constructor
生命周期 : componentWillReceiveProps(nextProps,nextContext)
shouldComponentUpdate(nextProps ,nextState,nextContext)
componentWillUpdate(nextProps, ,nextState, nextContext)
为什么 React 并不推荐我们优先考虑使用 Context?
Context 目前并未完善,会在后面的版本中有很大的变化,为了给升级带来巨大的影响 Context 会破坏组件树之间的依赖关系 Context 的值更新要依赖 setState/useState,这并不可靠,因为中间的组件可能会改变它,导致其他组件不能保证 context 的更新
让我们一起携手同走前端路!
评论