在构造函数和componentWillMount中哪种初始化更合适?

时间:2016-07-01 05:35:12

标签: reactjs

如果我有一个需要一些设置的React组件(例如,对于计时器或WebAudio API等),我在确定初始化是应该进入constructor还是componentWillMount时遇到问题。两者都有任何优点或缺点吗?我不清楚哪一个更适合这个。

我用Google搜索了一下,看看是否有人讨论过constructorcomponentWillMount之间的差异,但我找不到任何内容。

编辑:Redux和任何异步函数都不应该成为等式的一部分。

2 个答案:

答案 0 :(得分:28)

通常,如果您的组件是有状态的,那么您在构造函数中唯一要做的就是分配初始this.state。你不应该在构造函数中做任何其他事情。

componentWillMount通常是不必要的。我会说在大多数情况下它的使用是一种反模式。人们使用它的一个原因是在渲染之前最后一次从外部源更新状态,但技术上在构造函数中分配它是等效的。它提供的唯一的小便利是你可以setState在其中,但你不能在构造函数内。

对于任何副作用(数据提取或DOM操作),您应该使用componentDidMount

答案 1 :(得分:1)

如果你想调用一些flux动作(对于ajax调用),请使用componentWillMount或componentDidMount。

您可以在构造函数

中初始化状态