2

我知道在 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;
}
4

0 回答 0