React 库中的上下文和更新程序参数是什么?

What are context and updater arguments in the React library?

我试图通过 React library 来理解 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;
}

这些东西的用途是什么?

Context

Context 的引入是为了让开发人员能够直接将 props 传递给组件,而不是通过 prop drilling 的方式通过每个中间组件的属性(这很快就会变得过于繁琐)。

In some cases, you want to pass data through the component tree without having to pass the props down manually at every level. You can do this directly in React with the powerful “context” API.


更新程序

updater 是一个包含 methodsobject 用于更新 DOM.

这在行 6179 中很明显。

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

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

这些methods分别使用setState() and forceUpdate()触发。