在这个链接上(很多人提到,为了理解React 16的架构)它被提到:
甚至 React 中的 Elements 也是包含组件信息的普通 JS 对象,具有以下四个属性:
{
type,
ref,
props,
key
}
我现在想知道 Component、Element、Instance 和这个新的Fiber对象之间的明显区别。此外,这个新的 Fiber 对象是否与图片中提到的具有更多新属性的旧 Element 对象相同?
在这个链接上(很多人提到,为了理解React 16的架构)它被提到:
甚至 React 中的 Elements 也是包含组件信息的普通 JS 对象,具有以下四个属性:
{
type,
ref,
props,
key
}
我现在想知道 Component、Element、Instance 和这个新的Fiber对象之间的明显区别。此外,这个新的 Fiber 对象是否与图片中提到的具有更多新属性的旧 Element 对象相同?
Fiber 是一个 JavaScript 对象,其中包含有关组件、其输入和输出的信息。它与实例具有一对一的关系。它管理实例的工作。纤程使用属性 stateNode 跟踪实例。它也有关于它与其他实例的关系的信息。
export function createFiberFromElement(
element: ReactElement,
mode: TypeOfMode,
expirationTime: ExpirationTime,
): Fiber {
let owner = null;
if (__DEV__) {
owner = element._owner;
}
let fiber;
const type = element.type;
const key = element.key;
const pendingProps = element.props;
let fiberTag;
if (typeof type === 'function') {
....
....
....
我可以理解 React Fiber reconciler 使用 react 元素为组件实例生成一个 Fiber 节点。因此,您可以将其视为具有时间管理超能力的反应元素。
区别不在于结构的属性,而在于它们所代表的内容。
React Element 是一个描述你想在屏幕上看到的东西的对象。基本上是什么出来的渲染方法。
React Fiber(小写)是一种表示工作单元的数据结构。
React Fiber(大写)的最大优势是调度。React now 可以暂停,允许其他事情发生,然后恢复到它离开的地方。为此,React 需要知道它离开了哪里以及接下来需要做什么。这就是纤维所允许的(在其他事物之间)。