react学习(五)______setState函数方法

setState是react同步更新视图的API方法,前面说过,react是一个专注于视图层的轻量级库,所以我们每当状态更新之后,视图都不会同步最新的状态,这个时候我们就需要手动的更新一下视图。同步视图的方法API为setState。

setState第一个参数可以传递一个对象

import React, { Component } from 'react'

export default class Test extends Component {
    constructor(){
        super()
        this.state={
            doing:"学习"
        }
    }
    changeDoing = air => {
        this.setState({
            doing:air
        })
    }
    render() {
        return (
            <div>
                我是test组件======》{this.state.doing}
                <button onClick={this.changeDoing.bind(this,"打飞机")}>点击改变doing</button>
            </div>
        )
    }
}

setState第一个参数可以传递一个函数

  • 函数里面有两个参数(prevSate,props),prevSate是上一个状态,父组件的props
changeDoing = (air) => {
        console.log(air) //打飞机
        this.setState((prevSate,props) =>{
            console.log("prevSate",prevSate,"props",props) //prevSate {doing: "学习"}  props {}
            return{
                doing:air
            }
        })
    }

setState第二个参数输一个回调函数

  • setState是异步的,所以想要获取到最新的state,没有办法获取,就有了第二个参数,这是一个可选的回调函数
changeDoing = (air) => {
        this.setState((prevSate,props) =>{
            return{
                doing:air
            }
        },() => {
            console.log("回调函数里拿到最新的状态",this.state.doing) //控制台:回调函数里拿到最新的状态 打飞机
        })
            console.log("setState函数外部拿状态",this.state.doing) //setState函数外部拿状态 学习
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。