博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对react中setState的总结
阅读量:6822 次
发布时间:2019-06-26

本文共 884 字,大约阅读时间需要 2 分钟。

setState 如何工作:

正常来说:每次调用 setState 修改属性后,都会触发重新渲染组件。

而重新渲染组件的方法则是一个 updater 方法。这个方法会在React Dom/React Dom Server/React Native 创建类的实例之后立即设置。这也是,不同环境下使用setState都产生一致效果的原因。

而不正常的请情况下,比如同一个方法内,多次调用 setState ,它们只会触发一次 re-render。但是同一个方法的异步调用 setState 则会调用同setState次数的 re-render (updater):

// 同步调用onClick = () => {    let { count } = this.state;        this.setState({        count: ++count    });        this.setState({        count: ++count    });} // re-render 次数:1// 异步调用onClickAsync = () => {    let { count } = this.state;        this.setState({        count: ++count    });        setTimeout(() => {        this.setState({            count: ++count        });    }, 0);} // re-render 次数:2复制代码

而在 render 方法或者 componentWillUpdate / componentDidUpdate 内部调用了 setState,因为 setState会触发重新渲染组件,因此会出现循环调用的情况。此时React会抛出错误Maximum update depth exceeded.,超出最大更新深度,这是因为React限制了嵌套更新的数量以防止无限循环。

有总结才有收获。

转载地址:http://qwmzl.baihongyu.com/

你可能感兴趣的文章
PXC搭建
查看>>
tp 内置压缩文件zip
查看>>
FineUI开源版(ASP.Net)开发实践-目录
查看>>
Coding WebIDE 开放支持第三方 Git 仓库
查看>>
java的数据交互方式
查看>>
关于Python的super用法
查看>>
去掉二级页面 tabs 菜单, 修改返回按钮
查看>>
关于性能优化的法则
查看>>
文件遍历升级版
查看>>
【Redis篇】Redis集群安装与初始
查看>>
jquery基础
查看>>
C# 集合已修改;可能无法执行枚举操作
查看>>
FSM Code Generator
查看>>
JDBC学习笔记——事务、存储过程以及批量处理
查看>>
JVM内存结构
查看>>
Java 锁
查看>>
7、索引在什么情况下遵循最左前缀的规则?
查看>>
c#中委托与事件
查看>>
mysql数据库备份之主从同步配置
查看>>
my大众点评作业思路实现:app+跨域+模板引擎+artDialog弹出层+ajax基本增删改查的使用...
查看>>