详解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 相关文章推荐
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
JavaScript 学习历程和心得分享
Dec 12 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
Dec 10 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
Javascript实现鼠标右键特色菜单
Aug 04 Javascript
javascript实现支持移动设备画廊
Aug 24 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
Javascript的console['']常用输入方法汇总
Apr 26 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 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生成Gif图片验证码
2013/10/27 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
javascript版2048小游戏
2015/03/18 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
Python中的pack和unpack的使用
2018/03/12 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
Django  ORM 练习题及答案
2019/07/19 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
AJax面试题
2014/11/25 面试题
自荐书格式
2013/12/01 职场文书
自主招生自荐信格式
2013/12/03 职场文书
初中新生军训方案
2014/05/13 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书