React.withContext和getChildContext

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React.withContext和getChildContext相关的知识,希望对你有一定的参考价值。

参考技术A 1、React.withContext会执行一个指定上下文信息的回调函数,任何在这个回调函数里面渲染的组件都有这个context访问权限(我对这句话的理解是:为这个组件指定了context)
(1)情况一:任何想访问context里面的属性的组件都必须显示的指定一个contextTypes的属性,如果没有指定该属性,那么组件通过this.context访问属性将会出错。

(2)情况二:如果你为一个组件(这里指组件A)指定了context,那么这个组件的子组件(这里指组件B)只要定义了contextTypes,就可以访问到父组件指定的context了。

(3)上边情况二中可以看出我们会在文件中引入两个组件,那为了减少文件的引用,我们可以把contextTypes放在minx中,这样用到的组件引用这个minx就可以了。

2、getChildContext:与访问context属性需要通过contextTypes指定可访问的属性一样,getChildContext指定的传递给子组件的属性需要先通过childContextTypes来执行,不然会报错。
(1)情况一:

(2)情况二:假设应用程序有多层的context。通过withContext和getChildContext指定的context元素都可以被子组件引用。但是子组件是需要通过contextTypes来指定所需要的context元素的。

(3)context是就近引用的,如果你通过withContext指定了context元素,然后又通过getChildContext指定了该元素,该元素的值将会被覆盖。

总结:通过context传递属性的方式可以大量减少通过props逐层传递属性的方式,这样可以直接减少组件之间的依赖关系(我之前有一篇文章提到了context可以跨组件传值,大概就是这个意思吧~)

参考文章:
React 中使用context实现数据穿越
react中context学习

相关文章:
深入浅出React高阶组件
React进阶之高阶组件

以上是关于React.withContext和getChildContext的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理