我正在使用 React 构建一个大型应用程序,其中共享父组件处理多个子组件的所有状态。其中一些孩子呈现超过 1000 个项目的列表。
我意识到在父级内部切换布尔值setState
将重新渲染父级,进而再次渲染其所有子级。
我的问题是,如果子项的列表项都没有更改,那么重新渲染是否会导致子项循环并重新构建庞大的列表——每次父项重新呈现时?
虚拟 DOM 在其中扮演什么角色?孩子是否重新构建列表但 DOM 永远不必更新,因为 diff 看到列表元素没有改变?
编辑:最后,如果是这种情况,该key
属性如何影响列表重新渲染?如果我有 1000 个项目都具有唯一键,但 3 个项目的键是null
, (意味着它们具有相同的键值)那么整个列表是否会重新呈现?