我将此行视为此处另一个问题的答案:

“componentWillMount应该是componentDidMount,否则您将在节点中泄漏事件发射器。”

而且我不太了解。有人可以详细解释吗?

更多信息:

作为初始渲染的一部分,子组件使用通量构建 react 应用程序,以计算一些数据。理想情况下,在计算完这些数据之后,我想调用一个 Action ,该 Action 用一部分新数据更新商店的状态。

通常,更新商店的状态会发出更改事件,从而导致重新渲染。但是,因为直到componentDidMount(而不是componentWillMount)才添加更改监听器,所以我的顶级组件无法监听在初始渲染期间发生的更改并启动重新渲染。

如果我将addChangeListener移到componentWillMount上,似乎可以解决此问题,但是上面的引用表明这是个坏主意?

最佳答案

如果没有更多上下文,很难理解该报价的含义。我可以告诉您的是,这两种方法之间存在巨大差异。

一方面,在实际将组件添加到DOM之前调用componentWillMount。这是您必须更新组件状态并在浏览器呈现组件之前呈现它的最后机会。

另一方面,一旦组件已附加到DOM(实际的DOM)上,就会调用componentDidMount

您真正需要的取决于您的用例。通常,componentDidMount用于与其他库(如jQuery)集成,它提供了一种修改组件呈现的HTML的方法。

我建议您阅读以下链接:

  • https://facebook.github.io/react/docs/component-specs.html#mounting-componentwillmount
  • https://facebook.github.io/react/docs/component-specs.html#mounting-componentdidmount
  • https://facebook.github.io/react/tips/use-react-with-other-libraries.html
  • 关于javascript - 为什么addChangeListener应该在componentDidMount中而不是在componentWillMount中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30898571/

    10-11 13:07