在构造函数中将状态属性设置为undefined是最佳实践吗?

时间:2020-02-07 13:05:40

标签: reactjs

我要进入一个将状态设置为undefined的React项目,我觉得这可能不是最佳实践。如果某事尝试访问未定义状态,是否有可能引发错误?用空值初始化状态会更好吗?也许我在这里做错了假设。

class MyClass extends Component {
  constructor(props) {
    super(props);
    this.state = {
      foo: undefined,
      bar: undefined,
      foobar: undefined
    };
  }

2 个答案:

答案 0 :(得分:4)

与其用state初始化undefined,不如用期望的空值初始化它。假设您有:

state:{
  orders: undefined,
  balance: undefined
}

现在,如果要将orders呈现为:

{this.state.orders.map(order => {
  return <p>{order.details}</p>;
})}

上面的代码将中断,您可能会看到一条错误消息,指出在未定义的地图上找不到地图。因此,为避免此类中断并在屏幕上呈现某些内容,最好使用空值进行初始化,例如:

state:{
  orders: [],
  balance: 0
}

以上代码不会中断,并且将呈现视图。希望对您有帮助。

答案 1 :(得分:0)

像这样初始化状态会有所不同,例如,当您要遍历所有键时。但是,为清楚起见,在构造函数中初始化所有状态元素是一个好习惯。能够查看状态处理了哪些键,这样更具可读性。