React库中的上下文(context)和更新器(updater)参数是什么?

19

我试图通过React库来理解React,但是在传入组件的contextupdater方面无法理解。

以下是库中的代码:

function Component(props, context, updater) {
  this.props = props;
  this.context = context;
  this.refs = emptyObject;
  // We initialize the default updater but the real one gets injected by the
  // renderer.
  this.updater = updater || ReactNoopUpdateQueue;
}

这些东西的目的是什么?


1
您有查看过ReactNoopUpdateQueue或者React代码库中其他具有类似命名方法的对象吗?这些可能会回答您的一些问题 :-) - Sean Vieira
嗨@SeanVieira,感谢您的帮助,我也无法从那个文件中理解,如果您有时间,能否请您简要概述一下?谢谢。 - Ishan Patel
1个回答

19

上下文

上下文的引入使得开发者可以直接向组件传递属性,而无需通过中间每个组件的属性进行传递,以避免出现繁琐的属性钻取问题。

在某些情况下,您需要在组件树中传递数据,而不必手动在每个级别上传递属性。使用强大的“上下文”API,您可以直接在React中完成此操作。


更新器

更新器是一个包含方法对象,用于更新DOM

这在第6179行中很明显。

// Line 61: Enqueue setState.
this.updater.enqueueSetState(this, partialState, callback, 'setState') 

// Line 79: Force Update.
this.updater.enqueueForceUpdate(this, callback, 'forceUpdate') 

这些方法是分别使用setState()forceUpdate()触发的。


太棒了,谢谢@ArmanCharan。 你能否举个例子来解释以下情况吗:在某些情况下,你希望通过组件树传递数据,而无需在每个级别手动传递props。你可以直接使用React强大的“上下文”API来实现这一点。 - Ishan Patel
我认为我无法比官方文档更好地解释它。如果您有任何与它们相关的问题,我可以明确澄清。 - Arman Charan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接