• react中this.setState的理解


    this.setState作用?

    react中要修改this.state要使用this.setState,因为this.state只是一个对象,单纯的修改state并不会触发ui更新.

    this.setState在修改state的同时,会调用render函数从而触发组件的更新

    (实际上this.setState修改完数据后,在调用的生命周期顺序为:shouldComponentUpdate->componentWillUpdate->

    render->componentDidUpdate)

    this.setState写法?

    this.setState有两个参数,写法如下:

    或者this.setState(()=>{return {msg:’xxx’}},()=>{});

    或者this.setState(()=>({msg:’xxx’}),()=>{});

    第一个参数是异步执行,第二个参数是异步执行完后执行.

    第二个参数的作用是获取最新的数据和最新的dom,可以用来验证数据是否修改成功等同于componentDidMount

    this.setState都是异步的吗?

    由React控制的事件处理程序,以及生命周期函数调用setState不会同步更新state 。

    React控制之外的事件中调用setState是同步更新的。比如原生js绑定的事件,setTimeout/setInterval等。

    大部分开发中用到的都是React封装的事件,比如onChange、onClick、onTouchMove等,这些事件处理程序中的setState都是异步处理的

     

    为什么是异步的?

    setState异步是因为在state更新量大的时候,可以批量更新state,在一段时间内等待一部分数据更新完,在更新

    this.setState为什么在原声中是同步的?

    因为react自己封装了一套机制代理原生事件,这就是合成事件,比如onClick,在合成事件中有原生事件没有的功能,这些多出来的导致setState执行是异步的.而在原生事件也就是非合成事件中是同步的

    setState执行后触发了那些函数

    我们知道setState执行后会触发render渲染,但并不只是render这一个生命周期,具体是:

    setState->shouldComponentUpdate->componentWillUpdate->render->componentDidUpdate

  • 相关阅读:
    mybatis异常:org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map com.sunyan.domain.User
    Markdown首行缩进和换行
    mybatis入门——mybatis的概述
    python2跟python3的区别
    码云与git
    Python入门(一)
    python环境搭建
    python简介
    计算机基础
    Typora、安装及使用
  • 原文地址:https://www.cnblogs.com/liuXiaoDi/p/12593717.html
Copyright © 2020-2023  润新知