您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ReactJS-每次调用“ setState”时都会调用渲染吗?

ReactJS-每次调用“ setState”时都会调用渲染吗?

每次调用setState时,React都会重新渲染所有组件和子组件吗?

认情况下-是。

一个方法 ,每个组件都有此方法,它负责确定“组件应该更新(运行 渲染 功能)吗?”。每次更改 状态 或从父组件传递新的 道具时

您可以为组件编写自己的 shouldComponentUpdate 方法实现,但是认实现始终返回 true- 意味着始终重新运行渲染函数

认情况下,在状态发生适当变化时,shouldComponentUpdate始终返回true以防止细微的错误,但是如果您始终将状态视为不可变并在render()中对props和state进行只读处理,则可以使用比较旧道具和状态及其替换的实现。

问题的下一部分:

如果是这样,为什么?我认为这个想法是,当状态改变时,React只渲染所需的内容

我们可以将“渲染”分为两个步骤:

虚拟DOM渲染:调用 render 方法时,它将返回组件的新 虚拟dom 结构。如前所述,此 渲染 方法总是在调用 setState()调用,因为认情况下 shouldComponentUpdate 始终返回true。因此,认情况下,React中没有优化。

原生DOM渲染:只有在虚拟DOM中更改了真实DOM节点后,React才更改浏览器中的真实DOM节点,并且需要的次数很少-这就是React的强大功能,它可以优化真实的DOM变异并使React更快。

其他 2022/1/1 18:21:37 有629人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶