详解React中setState回调函数


Posted in Javascript onJune 14, 2018

在使用React过程中,中可以使用this.state来访问需要的某些状态,但是需要更新或者修改state时,一般而言,我们都会使用setState()函数,从而达到更新state的目的,setState()函数执行会触发页面重新渲染UI。但是!!!setState是异步的!!!

1. 语法:

setState(updater[, callback]) //

updater是要改变的state对象,callback是state导致的页面重新渲染的回调,等价于componentDidUpdate
一般而言,在设置页面某些state的时候,需要先设置好state,然后再对页面的一些参数进行修改的时候,可以使用setState的回调函数。

2. 分析一下区别

不在回调中使用参数,我们在设置state后立即使用state:

this.state = {foo: 1};
this.setState({foo: 123});
console.log(this.state.foo);
// 1

在回调中调用设置好的state

this.state = {foo: 2};
this.setState({foo: 123}, ()=> {
 console.log(foo);
 // 123
});

关于setState的回调函数的作用大概如此,这个函数相当于componentDidUpdate函数,和生命周期的函数类似。

3. 注意:

  1. 刚说了,setState是异步的!不保证数据的同步。
  2. setState更新状态时可能会导致页面不必要的重新渲染,影响加载。
  3. setState管理大量组件状态也许会导致不必要的生命周期函数钩子调用。

参考文档:https://facebook.github.io/react/docs/react-component.html#setstate

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
非常不错的功能强大代码简单的管理菜单美化版
Jul 09 Javascript
JavaScript Prototype对象
Jan 07 Javascript
asp.net 30分钟掌握无刷新 Repeater
Sep 16 Javascript
javascript 兼容所有浏览器的DOM扩展功能
Aug 01 Javascript
jQuery应用之jQuery链用法实例
Jan 19 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
Aug 17 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
原生js实现回复评论功能
Jan 18 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 Javascript
js仿360开机效果
Dec 26 Javascript
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 #Javascript
Vue.js添加组件操作示例
Jun 13 #Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 #Javascript
clipboard.js在移动端复制失败的解决方法
Jun 13 #Javascript
ES6与CommonJS中的模块处理的区别
Jun 13 #Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 #Javascript
详解webpack运行Babel教程
Jun 13 #Javascript
You might like
php获取YouTube视频信息的方法
2015/02/11 PHP
php头像上传预览实例代码
2017/05/02 PHP
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
基于Pandas读取csv文件Error的总结
2018/06/15 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
python interpolate插值实例
2020/07/06 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
销售顾问的岗位职责
2013/11/13 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
党支部书记先进事迹
2014/01/17 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis