const [data, setData ] = useState()
usestate是聲明在組件內(nèi)部的數(shù)據(jù),相當(dāng)于組件內(nèi)部store數(shù)上的數(shù)據(jù)
更改他的唯一方式就是通過setData()來更改,
state數(shù)據(jù)更改,會觸發(fā)頁面上的state變化,會觸發(fā)組件重新render()
如果新的 state 需要通過使用先前的 state 計算得出,那么可以將函數(shù)傳遞給 setState。該函數(shù)將接收先前的 state,并返回一個更新后的值。
setData( state => state + 1)
react觸發(fā)render的三種方法
一、通過setState
二、this.forceUpdate()
三、通過狀態(tài)管理,如mobx,redux等
四、props改變,組件重新渲染
setState改變后,改變值,沒有觸發(fā)render()
https://blog.csdn.net/weixin_45621877/article/details/108720014
https://blog.csdn.net/weixin_44730897/article/details/106526136
state hook設(shè)置值,如果引用地址不變,是不觸發(fā)重新渲染的,但是值是設(shè)置進(jìn)去了
react中數(shù)組如果引用地址不變,是不觸發(fā)重新渲染的,但是值是設(shè)置進(jìn)去了
這里要根據(jù)react的渲染機(jī)制源碼,因為react 會判斷舊狀態(tài)和新狀態(tài)是否有變化,如果沒有變化就不渲染,所以要改變地址告訴render 是新狀態(tài)要重新渲染