您可以在此链接上找到很多人用来理解React 16架构的内容。这里提到:
在React中,即使元素是纯JS对象,它也包含有关组件的信息,并具有以下四个props:
{
type,
ref,
props,
key
}
我现在想要了解组件(Component)、元素(Element)、实例(Instance)和这个新的Fiber对象之间的明显区别。此外,这个新的Fiber对象仅仅是旧的Element对象加上一些新属性而已吗?
您可以在此链接上找到很多人用来理解React 16架构的内容。这里提到:
在React中,即使元素是纯JS对象,它也包含有关组件的信息,并具有以下四个props:
{
type,
ref,
props,
key
}
我现在想要了解组件(Component)、元素(Element)、实例(Instance)和这个新的Fiber对象之间的明显区别。此外,这个新的Fiber对象仅仅是旧的Element对象加上一些新属性而已吗?
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调和器使用react元素来为组件实例生成一个fiber节点。因此,您可以将其视为具有时间管理超能力的react元素。
区别不在于结构的属性,而在于它们所代表的内容。
React元素是描述您想在屏幕上看到的对象。基本上是从渲染方法中输出的内容。
React fiber(小写)是表示工作单元的数据结构。
React Fiber(大写)的巨大优势在于调度。现在React可以暂停,以允许其他事情发生,并恢复到离开的地方。为此,React需要知道它离开了哪里以及接下来需要做什么。这就是纤维所允许的(除其他事项外)。