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

我为什么不能直接修改组件的状态?

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

我为什么不能直接修改组件的状态?

React文档

setState
对此有这样的说法:

切勿

this.state
直接突变,因为
setState()
随后的呼叫可能会取代您所做的突变。对待
this.state
就好像它是不可变的。

setState()
不会立即变异,
this.state
但会创建待处理的状态转换。
this.state
调用此方法后进行访问可能会返回现有值。

无法保证对呼叫的同步操作,

setState
并且可以为提高性能而对呼叫进行批量处理。

setState()
除非在中实现了条件渲染逻辑,否则它将始终触发重新渲染
shouldComponentUpdate()
。如果正在使用可变对象,并且无法在中实现逻辑
shouldComponentUpdate()
,则
setState()
仅在新状态与先前状态不同时进行调用才能避免不必要的重新渲染。

基本上,如果

this.state
直接进行修改,则会造成一种情况,即这些修改可能会被覆盖。

与您的扩展问题1)和2)有关,

setState()
不是立即的。
它将根据其认为正在进行的状态进行排队,其中可能不包括对的直接更改
this.state
。由于已排队而不是立即应用,因此完全有可能在两者之间进行某些修改,以使您的直接更改被覆盖。

如果没有别的,您可能会觉得更好,只是考虑将不直接修改

this.state
视为良好做法。您可能个人知道您的代码与React交互时不会发生这些改写或其他问题,但是您正在创建一种情况,其他开发人员或将来的更新可能突然发现自己遇到奇怪或微妙的问题。



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

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

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