栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

默认情况下-是。

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

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

引用官方文档http://facebook.github.io/react/docs/component-specs.html#updating-
shouldcomponentupdate

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

问题的下一部分:

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

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

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号