https://yq.aliyun.com/ziliao/301671

https://segmentfault.com/a/1190000014498196

https://blog.csdn.net/u011272795/article/details/80882567

import React, { Component } from 'react';

export default class SeeState extends Component {
constructor() {
super();
this.state = { val: 0 };
}
componentDidMount() {
// 在同一个方法中多次setState是会被合并的,并且对相同属性的设置只保留最后一次的设置;
// 定时器中的setState,每次都会引起新的render,即使是同一个定时器中的多次setState
// render输出3
this.setState({val: this.state.val + 1});
console.log(this.state.val); // 第 1 次 log 0
this.setState({val: this.state.val + 1});
console.log(this.state.val); // 第 2 次 log 0
setTimeout(() => {
this.setState({val: this.state.val + 1});
console.log(this.state.val); // 第 3 次 log 2
this.setState({val: this.state.val + 1});
console.log(this.state.val); // 第 4 次 log 3
}, 0); // setState不会立刻改变React组件中state的值;而是存一个快照
// render输出2
// this.setState(prevState=>({
// val: prevState.val+1
// }))
// console.log(this.state.val); // 第 1 次 log 0
// this.setState(prevState=>({
// val: prevState.val+1
// }))
// console.log(this.state.val); // 第 2 次 log 0
}
render() {
const {val} = this.state
return (
<div>{val}</div>
);
}
}

React中的setState到底发生了什么?的更多相关文章

  1. react中的setState的使用和深入理解

    前端框架从MVC过渡到MVVM.从DOM操作到数据驱动,一直在不断的进步着,提升着, angular中用的是watcher对象,vue是观察者模式,react就是state了,他们各有各的特点,没有好 ...

  2. 3.React中的setstate的几个现象

    转载segfault 上面的一篇文章,https://segmentfault.com/a/1190000014498196 1.在同一个方法中多次setState是会被合并的,并且对相同属性的设置只 ...

  3. react中this.setState的理解

    this.setState作用? 在react中要修改this.state要使用this.setState,因为this.state只是一个对象,单纯的修改state并不会触发ui更新.所以我们需要用 ...

  4. React中this.setState是同步还是异步?为什么要设计成异步?

    在使用react的时候,this.setState为什么是异步呢? 一直以来没有深思这个问题.昨天就此问题搜索了一下. react创始人之一 Dan Abramovgaearon在GitHub上回答了 ...

  5. react 中的 setState

    语法:setState(newState [,callback]) 1.只要有入门基础的同学都知道 setState({...}) 是更新组件中的 state 内容 2.但是,setState 是异步 ...

  6. React中的setState(obj)

    1.setState(obj)  只能浅merge obj,对于复杂对象结构的不行 比如:  this.state = {   data:{  idx:1 }   }   this.setState( ...

  7. 从源码的角度再看 React JS 中的 setState

    在这一篇文章中,我们从源码的角度再次理解下 setState 的更新机制,供深入研究学习之用. 在上一篇手记「深入理解 React JS 中的 setState」中,我们简单地理解了 React 中 ...

  8. React 中的this.setState

    在react中如何修改state中的数据     第一种写法:this.setState()         参数1:对象 需要修改的数据         参数2:回调 this.setState是一 ...

  9. React中setState学习总结

    react中setState方法到底是异步还是同步,其实这个是分在什么条件下是异步或者同步. 1.先来回顾一下react组件中改变state的几种方式: import React, { Compone ...

随机推荐

  1. 百度UE编辑器从word粘贴公式

    图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...

  2. Codeforces Round #566 (Div. 2)题解

    时间\(9.05\)好评 A Filling Shapes 宽度为\(3\),不能横向填 考虑纵向填,长度为\(2\)为一块,填法有两种 如果长度为奇数则显然无解,否则\(2^{n/2}\) B Pl ...

  3. 小程序开发--API之登录授权逻辑

    小程序登录授权获取逻辑 原生的小程序提供许多开放接口供使用者开发,快速建立小程序内的用户体系. 下面将小程序校验.登录.授权.获取用户信息诸多接口串联起来,以便更直观的认识到这些接口是如何在实际应用中 ...

  4. Go By Example-值类型

    Go By Example-值类型 Go语言的数据类型可以分为值类型和引用类型,这里先说值类型. 值类型 值类型:在Go语言中int.float.bool和string这些类型都属于值类型,使用这些类 ...

  5. chrome浏览器备忘

    记录日常使用Chrome遇到的问题. audio控件播放音频问题 打开http://www.cdfive.com,发现音乐没有自动播放,F12打开控制台发现有如下报错: Uncaught (in pr ...

  6. ftplib python ftp

    在气象领域,FTP是比较常用的一个数据来源.本文尝试采用python的ftplib包,实现了从指定ftp服务器中批量下载文件的功能.供大家学习参考. https://docs.python.org/3 ...

  7. github免费私有仓库使用

    本文链接:https://blog.csdn.net/subfate/article/details/86147645github仓库前不久开放了个人私有仓库(原来要收费),个人使用无数量限制.对于想 ...

  8. PM2用法简介【命令行启动 --env 参数设置使用问题】

    环境切换 正式开发中分为不同的环境(开发环境.测试环境.生产环境),我们需要根据不同的情景来切换各种环境 pm2通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参 ...

  9. django 2 ORM操作 ORM进阶 cookie和session 中间件

    ORM操作 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  10. Javascript-基本类型

    数字 JavaScript不区分整数和浮点数,所有数字都用浮点数表示. 能够表示最大值是 -253 ~ 253,包含边界.超过范围的数无法保证低位数字的精度. JavaScript能直接识别十进制的整 ...