[react] 为什么建议setState的第一个参数是callback而不是一个对象呢?
[react] 为什么建议setState的第一个参数是callback而不是一个对象呢?
React 为了优化性能,有可能会将多个 setState() 调用合并为一次更新。
因为this.props和this.state 可能是异步更新的,你不能依赖他们的值计算下一个state(状态)。以下面的代码为例:
this.setState({
counter: this.state.counter + this.props.increment,
});
我们并不能通过上述代码得到想要的值,为了弥补这个问题,使用另一种 setState() 的形式,接受一个函数。这个函数将接收前一个状态作为第一个参数,应用更新时的 props 作为第二个参数,代码如下:
this.setState((prevState, props) => ({
counter: prevState.counter + props.increment
}));
个人简介
我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论
主目录
[react] 为什么建议setState的第一个参数是callback而不是一个对象呢?相关推荐
- [react] react中setState的第二个参数作用是什么呢?
[react] react中setState的第二个参数作用是什么呢? 第二个参数是一个callback函数,用于setState设置state的属性值成功之后的回调,此时调用this.state.p ...
- 从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现
看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/. ...
- React中使用setState
不要直接修改 State state数据不能直接修改,必须要通过setState来修改.但是设置值的时候不能影响到之前state的值,举个栗子: // 处理数组,不会改变原有数组 this.setSt ...
- 【React深入】setState的执行机制
一.几个开发中经常会遇到的问题 以下几个问题是我们在实际开发中经常会遇到的场景,下面用几个简单的示例代码来还原一下. 1.setState是同步还是异步的,为什么有的时候不能立即拿到更新结果而有的时候 ...
- [react] react中的setState执行机制是什么呢?
[react] react中的setState执行机制是什么呢? 1.将setState传入的partialState参数存储在当前组件实例的state暂存队列中. 2.判断当前React是否处于批量 ...
- 《React极简教程》第一章 Hello,World!
react React 是一个用于构建用户界面的 JAVASCRIPT 库. React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图). React 起源于 Facebook ...
- react中的setState
setState的使用 1.1. 为什么使用setState 回到最早的案例,当点击一个 改变文本 的按钮时,修改界面显示的内容: 案例的基础代码如下: import React, { Compone ...
- 在python中定义类时实例方法的第一个参数名称_第7.5节 揭开Python类中self的面纱...
在上节已经引入介绍了类定义,并简单介绍了类变量.实例变量.类方法和实例方法,后面章节还会进一步详细介绍相关的内容.本节要介绍的self是与类变量.实例变量.类方法和实例方法具体定义实现强相关的. 一. ...
- Error in exists(x): 第一个参数不对
Error in exists(x): 第一个参数不对 目录 Error in exists(x): 第一个参数不对 问题: 解决: 完整错误: 问题: exists(x) x <- c(1,2 ...
最新文章
- RHEL 5服务篇—使用Apache搭建web服务(四)部署AWStats网站分析系统
- applicationContext.xml中设置读取jdbc.properties文件
- linux 命令行字符终端terminal下强制清空回收站
- 初步学习Prometheus的微服务监控功能
- 设计图书馆oracle触发器,Oracle触发器开发与设计
- 强化学习在游戏中的作用_游戏中的强化学习
- PHP面试题(二)---百度
- android直播弹幕开发,Android上专为视屏直播打造的轻量级弹幕库(100多kb)
- 怎么添加校园邮箱到Outlook?
- jQuery插件库常用前端库引用地址详细提供
- 2019/04/02 实现互联网的DNS架构
- [Windows]卸载Office 2016密钥
- 【无标题】对于_, predicted = torch.max(outputs.data, 1)的理解
- 如何看计算机几核,如何查看电脑CPU是几核的?,这几步你要了解
- 为什么我不建议你将python作为入门编程语言
- IDM(Internet Download Manager)—下载各类安装包(github代码、python包)、软件、视频、文档的神器,居家必备良药...
- JDBC操作数据库——resultset的操作小窍门
- 紫光同创国产FPGA学习之Design Editor
- IDEA debug 断点无效
- PC 版微信多开防撤回软件