美文网首页
组件通信 context

组件通信 context

作者: 樱木夜访流川枫 | 来源:发表于2018-07-15 20:53 被阅读0次

概览

定义:Context 通过组件树提供了一个传递数据的方法,从而避免了在每一个层级手动的传递 props 属性

内容

1 设计目的

共享那些被认为对于一个组件树而言是“全局”的数据
误解:不要仅仅为了避免在几个层级下的组件传递 props 而使用 context,它是被用于在多个层级的多个组件需要访问相同数据的情景。

2 API
React.createContext

创建一对 { Provider, Consumer }。当 React 渲染 context 组件 Consumer 时,它将从组件树的上层中,最接近且匹配的 Provider 读取当前的 context 值

如果上层的组件树没有一个匹配的 Provider,而此时你需要渲染一个 Consumer 组件,那么你可以用到 defaultValue

Provider

接收一个value 属性传递给 Provider 的后代Consumers一个 Provider 可以联系到多个 Consumers。Providers 可以被嵌套以覆盖组件树内更深层次的值。

Consumer

接收一个函数作为子节点。 函数接收当前 context 的值并返回一个 React 节点。传递给函数的 value 将等于组件树中上层 context 的最近的 Provider 的 value 属性。如果 context 没有 Provider ,那么 value 参数将等于被传递给 createContext()defaultValue

每当 Provider 的值发生改变时,所有的 Consumers 都将会重新渲染。通过使用相同的算法如Object.is 比较新旧值来确定变化。

参考文献

react context

相关文章

  • React拓展5-Context

    Context:一种组件间通信方式, 常用于【祖组件】与【后代组件】间通信 Context 通过组件树提供了一个传...

  • 组件通信 context

    概览 定义:Context 通过组件树提供了一个传递数据的方法,从而避免了在每一个层级手动的传递 props 属性...

  • 03-react-跨组件级通信Context

    react-跨组件级通信- Context 之前编写组件都是通过props或者state的方式来传递组件, 但组件...

  • 跨组件通信Context

    目标任务: 了解Context机制解决的问题和使用步骤 问题场景 上图是一个react形成的嵌套组件树,如果我们想...

  • 疑问汇总

    1. react context是怎样实现 跨组件通信的? 从Context源码实现谈React性能优化[http...

  • useContext

    一种组件间通信方式, 常用于【祖组件】与【后代组件】间通信。a里面有b b有c,c有d。context适用于a和c...

  • react-非父组件通信的三种方式

    切换列表底部的详情内容修改非父组件通信可以用三种方式实现非父组件通信-状态提升,开发-订阅模式,context方案...

  • 组件跨层级通信 - Context

    如何使用Context:step1 : 创建一个context对象step2: 创建Provider,传递valu...

  • 组件通讯 event bus事件总线 ,Context和prop

    一、event bus 事件总线 进行非父子组件间的通信(兄弟组件) 二、Context的应用场景:在于很多不同层...

  • React跨层级组件通信-Context

    Provider: 外层提供数据的组件 Consumer: 内层获取数据的组件 注意: 当没有Provider会接...

网友评论

      本文标题:组件通信 context

      本文链接:https://www.haomeiwen.com/subject/hqcmpftx.html