美文网首页
React-深入探究Context(1)

React-深入探究Context(1)

作者: Edward_WLY | 来源:发表于2018-11-30 12:23 被阅读0次

前言

React组件中的Context与Android中的Context类似,都可以理解为上下文。而React中的Context拥有着组件间通信的功能,与props通信方式不同,Context的通信是跨层次的。

一、初识Context

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

二、什么时候使用Context

三、怎么使用Context

Context API在React v16.3的时候迎来了一次大变动,因此在使用上就有Old Context APINew Context API之分

New Context API

React.createContext
构造一个Context对象,该对象含有ProviderConsumer两个ComponentProvider可以理解成生产者,用于定义 context的值,而Consumer则为消费者,当 React 渲染 context 组件 Consumer 时,它将从组件树的上层中最接近的匹配的 Provider 读取当前的 context 值并对其进行“消费”

const {Provider, Consumer} = React.createContext(defaultValue);

createContext接受一个defaultValue ,用于 Consumer 组件找不到匹配的Provider时提供默认的context,这有助于在不封装它们的情况下对组件进行测试。

Provider

<Provider value={/* some value */}>

React 组件接收一个 value 属性,允许 Consumers 订阅 context 的改变。一个 Provider 可以提供context给多个 Consumers。Providers 可以被嵌套以覆盖组件树内更深层次的值。

Consumer

<Consumer>
 {value => /* render something based on the context value */}
</Consumer>

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

四、新旧API的比较

参考资料

React官网--Context(英文)
React官网--Context(中文)

相关文章

  • React-深入探究Context(1)

    前言 React组件中的Context与Android中的Context类似,都可以理解为上下文。而React中的...

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

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

  • React context探究

    Contexts 是React的一个重要属性,但是到目前为止,这个属性在正式的文档里面还没有对它进行正式介绍,在 ...

  • iOS-性能优化深入探究

    iOS-性能优化深入探究 iOS-性能优化深入探究

  • Java高级知识

    反射 sczyh30 深入解析Java反射(1) - 基础深入解析Java反射(2) - invoke方法深入探究...

  • Service通过onBind启动流程源码探究

    根据《Activity启动流程源码探究》我们可以清楚以下几点:1)Context的通用实现是在ContextIml...

  • Android Context源码探究

    Context可以说是Android开发中非常高频使用的内容了。弹出Dialog、Toast;打开新的Activi...

  • 深入探究

    环境因素: 1.降雨量大 2.绿色植物多(空气清新) 3.保护的好 地理因素: 1.靠近赤道(热)

  • 深入探究

    成因: 1.有大量可溶性岩石存在 2.岩石具有一定的透水性(具有一定的孔隙和裂隙) 3.流水有一定的溶蚀作用 4....

  • 2018-02-14

    探究KVO的底层实现原理 addObserver:forKeyPath:options:context:各个参数的...

网友评论

      本文标题:React-深入探究Context(1)

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