1 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
該代碼從來都不正確,因?yàn)樗鼘懭雙rops:
if ((typeof this.props.match.params.lng !== 'undefined') && ((this.props.match.params.lng == 'en') || (this.props.match.params.lng == 'lt'))) {
this.props.lang = this.props.match.params.lng.toString();
}
else {
this.props.lang = 'lt';
}
您的組件只能從 props 對(duì)象中讀取props,而不能寫入它。變化在于 React 通過使對(duì)象不可擴(kuò)展來強(qiáng)制執(zhí)行這一點(diǎn)。
如何修復(fù)它取決于您何時(shí)需要該信息以及您需要如何處理它(顯示的代碼中似乎沒有使用 this.props.lang
任何內(nèi)容):
如果它只是 的局部變量
render
,則將其設(shè)為局部變量。如果它影響您渲染組件的方式,請(qǐng)將其存儲(chǔ)為狀態(tài)(并且不要更改 中的狀態(tài)
render
,在創(chuàng)建或安裝時(shí)執(zhí)行一次)。this
如果它是不影響渲染的實(shí)例特定信息,請(qǐng)將其存儲(chǔ)在(組件實(shí)例)的屬性中。
回復(fù) #2 和 #3:請(qǐng)記住,在組件實(shí)例的生命周期內(nèi)props
可能會(huì)發(fā)生變化。Props 的狀態(tài)實(shí)際上是由父級(jí)而不是組件進(jìn)行管理的。所以如果你從 props 中獲取信息,當(dāng) props 改變時(shí)你需要重新獲取它。
這可能會(huì)讓我們想到#4:
讓父級(jí)向組件提供一個(gè)函數(shù)來讓組件更新
lang
。當(dāng)它這樣做時(shí),它將獲得新的lang
更新道具并重新渲染。
添加回答
舉報(bào)