如果我有一个需要一些设置的React组件(例如,对于计时器或WebAudio API等),我在确定初始化是应该进入constructor
还是componentWillMount
时遇到问题。两者都有任何优点或缺点吗?我不清楚哪一个更适合这个。
我用Google搜索了一下,看看是否有人讨论过constructor
和componentWillMount
之间的差异,但我找不到任何内容。
编辑:Redux和任何异步函数都不应该成为等式的一部分。
答案 0 :(得分:28)
通常,如果您的组件是有状态的,那么您在构造函数中唯一要做的就是分配初始this.state
。你不应该在构造函数中做任何其他事情。
componentWillMount
通常是不必要的。我会说在大多数情况下它的使用是一种反模式。人们使用它的一个原因是在渲染之前最后一次从外部源更新状态,但技术上在构造函数中分配它是等效的。它提供的唯一的小便利是你可以setState
在其中,但你不能在构造函数内。
对于任何副作用(数据提取或DOM操作),您应该使用componentDidMount
。
答案 1 :(得分:1)
如果你想调用一些flux动作(对于ajax调用),请使用componentWillMount或componentDidMount。
您可以在构造函数
中初始化状态