1. 程式人生 > 實用技巧 >react修改狀態

react修改狀態

直接修改this.state資料不會響應式更新頁面,

需要使用setState方法,而且setState是可能非同步的(由 React 控制的事件處理過程 setState 不會同步更新 this.state),

一般有兩種呼叫方式

//修改
this.setState(物件)  //淺合併state

this.setState((asyncState,prevProps)=>{
  //一般是用於在setState之前做一些操作
  //this.state==同步結果
  //asyncState==非同步結果
  return {
    sname:value
  }
}) 

this.setState({
  sname:value
}, () 
=> { //一般是用於在setState之後做一些操作 //this.state == 修改之後的state })

import React, {Component} from "react"
class  MyDom  extends Component{
    state={
        a:1,
        b:2,
        c:"1ww"
    }
//this.setstate({},()=>{})  非同步更新後回撥
//this.setstate(()=>{})  //直接獲取更新後的狀態
    modifyState=()=>{
        
//setState方法函式第一個是修改後statte狀態,第二引數是元件呼叫方傳遞的引數props this.setState((asyncState,prevprops)=>{ this.state.b=0 console.log(asyncState) console.log(prevprops) return { a:"a", d:4, b:this.state.b+1,
// c:this.state.b+1, c:asyncState.b+1 } }) } render() { return ( <div >Mydom <button onClick={this.modifyState}>修改</button> </div> ) } } export default MyDom