我正在使用反应,我想将一个组件拆分为子组件,以优化它(我正在使用 mobX 并尝试实现一些作为此处的列表示例https://mobxjs.github.io/mobx/best/react-performance。 html )
然而,这样做似乎我被迫引入额外的 dom 元素。考虑一个 NodeComponent 来渲染一棵树
const NodeComponent = ({node}) => (
<div>
<div that access some stuff with node properties/>
{children.map(childNode => <NodeComponent node={childNode} />)}
</div>
);
这是伪代码,我希望你明白。
如何将第一个内部 div 与递归渲染分开,而不在子级周围引入额外的包装 dom 元素(如下面的 div)?
const NodeComponent = ({node}) => (
<div>
<div that access some stuff with node properties/>
**<useless div>**
{children.map(childNode => <NodeComponent node={childNode} />)}
**<useless /div>**
</div>
);
如果我有数千个节点,这意味着有数千个额外的无用 dom 元素,而且我正在移植具有特定 dom 结构和 CSS 的现有控件,如果我想拆分它们,我必须更改它。
TL;博士; 我可以将此组件拆分为 2,以便在不需要更改 DOM 输出的情况下获得不重新渲染所有子级的 mobx 优化吗?
或者再次:为什么纯粹的优化/重构迫使我修改我的 dom 最终结果?