仅在getDerivedStateFromProps()中返回修改后的状态属性有关系吗?

时间:2018-09-19 05:18:33

标签: reactjs react-16

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

0 个答案:

没有答案