使用getDerivedStateFromProps时,应该如何编写构造函数?

时间:2018-06-08 19:46:12

标签: reactjs

class Foo extends Component {
  constructor(props) {
    super(props)

    this.state = {}
  }

  getDerivedStateFromProps(props) {
    return {
      offerX:
        props.canDoX && localStorage.getItem('shouldDoX')
    }
  }
}

或者我应该使用this.state = { offerX: null }定义构造函数,然后让getDerivedStateFromProps在首次渲染之前覆盖它?是不必要的逻辑,但也许它对文档有帮助,所以读者知道状态对象的格式?

2 个答案:

答案 0 :(得分:0)

根据上述情况下代码的可读性,这个特定场景并不特定于使用getDerivedStateFromProps,这适用于每次我们向未定义的状态添加新项目时在构造函数中。

关于在构造函数中定义状态时增加代码的可读性;是的,对于其他开发人员或者在重新访问所有状态定义组件行为和功能的代码时,对自己非常有帮助

答案 1 :(得分:0)

如果您使用的是reactjs而不是react-ts,那么最好指定状态对象的初始值。它提高了代码的可读性,但如果你使用getDerivedStateFromProps(props,state)它肯定是不必要的,因为它会将对象返回到将被调用的状态,无论是否有状态/ props更改。