我已经创建了一个文本输入,当您通过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;
};