Vue&React在帶狀態(tài)屬性上的處理

聲明:帶狀態(tài)屬性在Vue中指data,在React中指state


1.創(chuàng)建

Vue:

  • Vue中創(chuàng)建一個帶狀態(tài)的屬性,只需要在組件內(nèi)部使用this.data=object就可以了,值得注意的是,如果不是根組件,最好在賦值給this.data時使用一個函數(shù),那樣可以防止多個組件共用一個data
this.data = function() {
    return {
        attr1 : attr1,
        //...
    }
}

React:

  • React中創(chuàng)建一個帶狀態(tài)的屬性,只要在構(gòu)造函數(shù)中使用this.state=object就可以了,值得注意的是,直接對this.state的賦值只能被允許在構(gòu)造函數(shù)中進(jìn)行,其他地方應(yīng)當(dāng)使用this.setState方法

2.更新

Vue:

  • Vue對data的更新只要簡單的更新對應(yīng)的屬性就可以了,比如data中有一個屬性為title,要更新它,只需要使用this.title=value就行了
  • Vue對于屬性的更新還提供了一個響應(yīng)式編程式的功能——計(jì)算屬性,關(guān)于它的內(nèi)容請查閱計(jì)算屬性

React:

  • React中更新state必須要使用this.setState方法,該方法接受多種形式的參數(shù),最簡單的是直接返回要更新的state對象,比如this.setState({date : new Date()}),但是并不建議這么使用,建議使用一個箭頭函數(shù)進(jìn)行包裹,比如this.setState(() =>{return {date : new Date()};});
  • 應(yīng)當(dāng)注意state的更新不是立即的,如果你的state依賴于props那么應(yīng)當(dāng)選擇下列寫法,詳細(xì)內(nèi)容請參閱State 的更新可能是異步的
this.setState((state, props) => ({
  counter: state.counter + props.increment
}));
  • state的更新是會采取合并而不是覆蓋的方式,所以你更新時只需要把變動的部分更新過去就可以了

參考文檔:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容