react 想要更新視圖只能用 setState( ) 方法
關於 setState() 這里有兩點需要知道
1. 不要直接更新狀態, 而是使用 setState()
2. 狀態更新是異步的,你如果依靠它們的值來計算下一個狀態不可以直接使用。
1、兩種調用方式
第一種 : 直接 改變
this.setState({ msg: "我被改變了" });
第二種 :通過 setState()傳入一個函數,這種用法 可以借助於 原有的state里的值
this.setState(state => { return { msg: "hello" }; });
2、修改狀態后依據狀態做些操作
第一種:回調函數
this.setState({ active:true },()=>{ console.log(this.state.active,'2') }) console.log(this.state.active,'1')
第二種:async / await
change = async ()=>{ await this.setState({ active:true }) console.log(this.state.active,'1') }
3、修改某個對象的部分屬性,使用Object.assign()
change = (pagination, filters, sorter, extra)=>{ this.setState((state)=>{ return { params:Object.assign(state.params,{ pageSize: pagination.pageSize, pageNum: pagination.current }) } }) }