我已經創建了一個文本輸入,當您通過onChange進行輸入時,它只會更新它自己的狀態,然後通過onBlurEvent向父級方向工作,以防止在用戶輸入時重新渲染太多的GUI。通過shouldComponentUpdate更新newState的最佳實踐?
這有效,但我的缺點是,由於輸入有它自己的狀態,如果道具因外力而改變,並且我想更新我的文本輸入作爲那些新道具,我有點兒泡菜。從我一直在尋找,shouldComponentUpdate可以創建一個修復程序,我的代碼工作,但只是因爲它的作品並不意味着我的實施是好的。
使用時的反應,我的理解是,我們不應該做更新狀態:
this.state.value = "This is a new value"
,而是做:
this.setState({
value: "This is a new value"
});
但對於直接改變newState這在技術上是不是「 this.state「在shouldComponentUpdate裏面?
我有如下的邏輯:
shouldComponentUpdate(props, newState) {
if (...logic 1 ... && props.value != newState.value) {
//keep newState
return true;
}
else if (...logic 2 ... props.value != newState.value)
{
newState.value = props.value; //Right Here
return true;
}
return false;
};