react修改狀態
阿新 • • 發佈:2020-08-19
直接修改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