如果由于父组件而重新渲染了组件,componentWillMount是否会再次运行?

时间:2018-08-15 05:03:12

标签: reactjs

如果由于父组件而重新渲染了组件,componentWillMount会再次运行吗?

2 个答案:

答案 0 :(得分:2)

否,componentWillMount仅被调用一次。

此外,componentDidMount仅被调用一次。

在每次重新渲染时都会调用

componentDidUpdate。

要正确了解反应生命周期方法,可以通过此链接。 https://engineering.musefind.com/react-lifecycle-methods-how-and-when-to-use-them-2111a1b692b1

答案 1 :(得分:1)

简短的回答是
在您的组件即将呈现到DOM之前,它被调用一次。

长答案是:

componentWillMount
您的组件将很快出现在屏幕上。那个笨拙的渲染函数,以及所有漂亮的JSX,都将被调用。 最常见的用例:根组件中的应用程序配置。 可以调用setState:是,但是不可以。改用默认状态。


componentDidMount
这是您加载数据的地方。您也可以在ComponentDidMount上做所有没有组件可玩时都做不到的有趣事情。基本上,这里您要进行没有DOM之前无法完成的所有设置,然后开始获取所需的所有数据。最常见的用例:启动AJAX调用以加载组件的数据。


componentWillReceiveProps
也许由父组件的componentDidMount加载的一些数据最终到达并正在传递。在我们的组件对新道具执行任何操作之前,将调用componentWillReceiveProps,并使用下一个道具作为参数。


shouldComponentUpdate
shouldComponentUpdate应该始终返回一个布尔值-一个回答“我应该重新渲染?”的答案。默认值为始终返回true。这是一个改善性能的好地方。


componentWillUpdate
最常见的用例:在还具有shouldComponentUpdate(但无法访问以前的道具)的组件上代替componentWillReceiveProps使用。它与componentWillReceiveProps基本相同,但不允许您调用this.setState。


componentDidUpdate 在这里,我们可以执行与componentDidMount中相同的工作-重置我们的砌体布局,重新绘制画布,等等。基本上,我们说完之后就使用它,但是我们不想浪费时间每次都重新绘制画布它更新。最常见的用例:更新DOM以响应属性或状态更改。


componentWillUnmount
在这里,您可以取消任何传出的网络请求,或删除与该组件关联的所有事件侦听器。基本上,清理所有只涉及所涉及组件的操作-gone消失后,就应该完全消失。