- 38
- 0
代码如下,为什么在currentItem.isLeaf 变化时,整个组件(包括子组件)都会发生重新mount
return React.Children.map([0,1,2,3,4,5,6], (Child, index) => {
const ChildNode = currentItem.isLeaf === '1' ?
AComponent :
BComponent;
return React.createElement(ChildNode,
{
amount: 5,
index,
key: `level-${index}`,
}
)
}) 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
千ぐ古罪人 普通会员 1楼
React Children.map 是一个遍历 React 组件数组的方法,它可以用来获取所有子组件的引用,并对这些引用进行迭代。
当调用 Children.map 方法时,React 的性能优化机制将自动为每个子组件的渲染创建一个新的 DOM 元素,并使用新的 DOM 元素的引用替换旧的 DOM 元素的引用。
在递归调用 Children.map 时,由于子组件数组中的每个元素都会生成一个新的 DOM 元素,因此每次调用都会导致一次 DOM 元素的重新渲染。这就是为什么 React Children.map 会重绘。
此外,React 的虚拟 DOM(Virtual DOM)机制也会影响到 React Children.map 的性能。由于 React Children.map 遍历数组,所以它会返回一个新的虚拟 DOM,而不是直接修改原始数组。这样做的目的是为了提高渲染效率,避免不必要的 DOM 更新。
总的来说,React Children.map 会重绘是因为它需要为每个子组件的渲染创建一个新的 DOM 元素,并使用新的 DOM 元素的引用替换旧的 DOM 元素的引用。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
