我知道在React 16的新生命周期方法getDerivedStateFromProps()中,如果状态没有任何变化,我应该返回null
,但是我想知道无论何时我都必须更新状态,但是数量多少修改后的状态属性可能会有所不同。是否在返回的对象中包含未更改的多余属性,这有关系吗?
换句话说,这样做更好吗?
static getDerivedStateFromProps(nextProps, prevState){
const foo = /* .. some calculation from props here */
const bar = /* .. some calculation from props here */
if (foo === prevState.foo && bar === prevState.bar) {
return null;
}
return {
foo,
bar
};
}
或者在验证属性是否不变后,最好限制返回对象中的属性数量:
static getDerivedStateFromProps(nextProps, prevState){
const foo = /* .. some calculation from props here */
const bar = /* .. some calculation from props here */
if (foo === prevState.foo && bar === prevState.bar) {
return null;
}
const newState = {};
if (foo !== prevState.foo) {
newState.foo = foo;
}
if (bar !== prevState.bar) {
newState.bar = bar;
}
return newState;
}