聲明:帶狀態(tài)屬性在Vue中指data
温鸽,在React中指state
1.創(chuàng)建
Vue:
- Vue中創(chuàng)建一個(gè)帶狀態(tài)的屬性蒋得,只需要在組件內(nèi)部使用
this.data=object
就可以了涉波,值得注意的是珠闰,如果不是根組件咬崔,最好在賦值給this.data
時(shí)使用一個(gè)函數(shù)狸棍,那樣可以防止多個(gè)組件共用一個(gè)data
this.data = function() {
return {
attr1 : attr1鉴扫,
//...
}
}
React:
- React中創(chuàng)建一個(gè)帶狀態(tài)的屬性赞枕,只要在構(gòu)造函數(shù)中使用
this.state=object
就可以了,值得注意的是,直接對(duì)this.state
的賦值只能被允許在構(gòu)造函數(shù)中進(jìn)行炕婶,其他地方應(yīng)當(dāng)使用this.setState
方法
2.更新
Vue:
- Vue對(duì)
data
的更新只要簡(jiǎn)單的更新對(duì)應(yīng)的屬性就可以了姐赡,比如data
中有一個(gè)屬性為title
,要更新它柠掂,只需要使用this.title=value
就行了 - Vue對(duì)于屬性的更新還提供了一個(gè)響應(yīng)式編程式的功能——計(jì)算屬性项滑,關(guān)于它的內(nèi)容請(qǐng)查閱計(jì)算屬性
React:
- React中更新
state
必須要使用this.setState
方法,該方法接受多種形式的參數(shù)陪踩,最簡(jiǎn)單的是直接返回要更新的state
對(duì)象杖们,比如this.setState({date : new Date()})
,但是并不建議這么使用,建議使用一個(gè)箭頭函數(shù)進(jìn)行包裹肩狂,比如this.setState(() =>{return {date : new Date()};});
- 應(yīng)當(dāng)注意
state
的更新不是立即的摘完,如果你的state
依賴于props
那么應(yīng)當(dāng)選擇下列寫法,詳細(xì)內(nèi)容請(qǐng)參閱State 的更新可能是異步的
this.setState((state, props) => ({
counter: state.counter + props.increment
}));
-
state
的更新是會(huì)采取合并而不是覆蓋的方式傻谁,所以你更新時(shí)只需要把變動(dòng)的部分更新過去就可以了
參考文檔: