三种方式
//方式1,传递函数给setState方法
this. setState((nextState,props) => ({
counter: state.counter + 1
}))//1
this. setState((nextState,props) => ({
counter: state.counter + 1}))//2
//连续三个this.setState({
// counter: this.state.counter+1
//})
//console.log(this.state.counter)//1
//~~~~~~~~~~~~~~
//方式2 使用定时器
setTimeout(()=>{
this. change Value()
console. log( this. state.counter)
},0)
//方式3 原生事件中修改状态
componentDidMount() {
document. body. addEventLisyener( "click",this. changeValue, false)
}
changeValue = () => {
this. setState({
counter: this. state. counter+1
})
console. log( this.state.counter)
}
总结:setState只有在合成事件和钩子函数中是异步的,在原生事件和setTimeout,setInterval中都是同步的## react的setState