有两个助手可用于在渲染时添加内容:
...
const DisplayA = () => <div className={'containerA'}>
<button onClick={handleToggleA}>{"A toggled: " + toggledA.toString()}</button>
</div>
const displayB = () => <div className={'containerB'}>
<button onClick={handleToggleB}>{"B toggled: " + toggledB.toString()}</button>
</div>
return (
<>
<DisplayA />
{ displayB() }
</>
);
...
问题是在第一个 helper 中,React 总是丢弃整个子树并从头开始重新创建,如下所示:
我知道,第一种方法是 React.createElement 的语法糖,因此每次渲染都会创建一个新组件。然而,第二种方式,每个渲染也会创建一个不同的箭头函数。
为什么 React 不知道如何以第一种方式重用子树,但知道第二种方式?引擎盖下发生了什么?
我们如何发现 DOM 子树何时被丢弃并在每次渲染时重新创建?假设不应该创建内联组件而只使用内联函数就足够了吗?
请注意,助手可以来自props,例如(渲染props模式)。