是否有人更喜欢使用React组件的构造函数而不是componentWillMount的原因?
我发现,使用生命周期方法componentWillMount
设置初始状态...是否有人更喜欢使用React组件的构造函数而不是componentWillMount的原因?
componentWillMount() { this.state = {
comments: []
};
}
...比使用构造稍微简单一些。这是因为当你使用构造函数时致电super()
。
constructor() { super();
this.state = {
comments: []
};
}
不仅如此,但如果你的组件传递props
和/或state
,那么你必须通过以及手动传递这些。
constructor(props, state) { super(props, state);
...
}
我没有使用componentWillMount
任何问题,但我几乎从来没有看到使用它的人设立的状态(除非他们避免ES6和不上课)。我得到我们可以访问es6类中的构造函数,但是为什么在必须将手动传递连接到父构造函数时使用它,并且有一个完美的生命周期方法已准备好并等待,因此您不必这样做?
只是好奇,如果有实际的实际原因,或者如果它大多只是偏好。
回答:
构造函数是初始化(直接分配给)state
唯一“正确”的地方。即this.state = {...}
您在组件中定义的其他功能(componentWillMount
等)称为React引擎调用的“生命周期回调”。预计state
应该在组件的整个生命周期中不可改变,并且绝不能直接分配给组件。相反,您必须this.setState({...})
才能对构造函数外部的任何位置的state
进行任何更改。
尽管您目前的做法可能尚未引起任何问题,但不保证以相同的方式继续工作。如果由于某种原因,React在生命周期回调之间读取state
,并且您在componentWillMount
回调中发生了变异,这可能会产生意想不到的后果。
我的建议是只在您的构造函数中直接初始化state
,并在其他地方使用setState
。
如果冗长是一个问题,你有没有其他目的的构造不是初始化你state
,你不需要props
来初始化你state
,只是声明和初始化您的国家财产:
class MyComponent extends React.Component { state = {}
}
回答:
那么根据DOCS:
一般情况下,我们建议使用构造函数()代替。
它还提到:
这就是所谓的在服务器上呈现的唯一的生命周期挂钩。
所以我想这可能是原因的一部分。
以上是 是否有人更喜欢使用React组件的构造函数而不是componentWillMount的原因? 的全部内容, 来源链接: utcz.com/qa/258546.html