Reactjs 在React中,this.context是如何工作的?

Reactjs 在React中,this.context是如何工作的?,reactjs,Reactjs,它不是一个官方API(!),但是context在React Mixin中非常有用。然而,它的行为和内容对我来说并不完全是直观的 this.context的内容来自哪里 (截至本文撰写之时,React的版本为0.12)我研究得太早了,this.context是一组隐式传递给其子级的属性,而不是显式传递属性。您可以查看React测试套件,了解它们的行为: 我还发现Dave King的这篇文章有助于理解一些公开的方法和行为: 如果你不介意的话,我有一篇关于React上下文的帖子 简言之,上下文是

它不是一个官方API(!),但是
context
在React Mixin中非常有用。然而,它的行为和内容对我来说并不完全是直观的

this.context
的内容来自哪里


(截至本文撰写之时,React的版本为0.12)

我研究得太早了,
this.context
是一组隐式传递给其子级的属性,而不是显式传递属性。您可以查看React测试套件,了解它们的行为:

我还发现Dave King的这篇文章有助于理解一些公开的方法和行为:
如果你不介意的话,我有一篇关于React上下文的帖子

简言之,上下文是一个对象,其属性从元素隐式传递给其所有子元素和子元素

要与具有上下文的子组件共享数据/属性,组件通过定义属性childContextTypes来定义上下文中可用的属性名称和数据类型。它还需要定义getChildContext方法,该方法返回上下文中属性的数据值。childContextTypes中的键必须与getChildContext方法返回的对象中的键完全相同

当子组件想要使用来自父级上下文的数据时,它必须首先通过定义属性contextTypes来明确声明它想要使用的内容。 contextTypes是一个指定要使用的属性的名称和类型的对象


文档有最好的信息。

简而言之,这就是语境

Top Parent
  |
  |
  |
Inter Parent
  |
  |
  |
Immediate Parent
  |
  |
  |
Child
假设您需要将一个道具从顶级家长传递到子家长。您需要将其设置为“直接父级”和“父级间”。如果是双向的,那么道具需要双向传递

上下文允许您绕过此选项,直接将数据从顶级父级传递到子级


当多个孩子需要相同的道具,但每个都是深嵌套的时,这会变得更有用。注意,不鼓励这样做,因此答案应该是搜索解决方案的终点(与另一个参考文献的中途停留相比,随着时间的推移,这些参考文献往往会过时)。请考虑在这里添加一个独立的概要,保持链接作为参考的AVE国王的文章是伟大的Dave King文章是可见的。我将建议对帖子进行编辑,以修复死链接React router将router对象添加到路由上下文中