首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ReactJS中,componentWillMount和componentDidMount有什么不同?

在ReactJS中,componentWillMount和componentDidMount有什么不同?
EN

Stack Overflow用户
提问于 2015-04-27 22:54:39
回答 3查看 61.1K关注 0票数 94

我在(React.Component)上看了Facebook的文档,它提到了componentWillMount是如何在客户端/服务器上调用的,而componentDidMount只在客户端上被调用。componentWillMount对服务器做了什么?

EN

回答 3

Stack Overflow用户

发布于 2015-04-28 01:45:27

为了补充FakeRainBrigand所说的,componentWillMount在服务器和客户端渲染React时被调用,但componentDidMount只在客户端被调用。

票数 37
EN

Stack Overflow用户

发布于 2017-07-06 19:09:55

componentWillMount在组件的初始render之前完成,用于评估属性并基于它们执行任何额外的逻辑(通常也是为了更新状态),因此可以在服务器上执行,以便获得第一个服务器端呈现的标记。

componentDidMount是在DOM更新后的初始render之后执行的(但关键是在DOM更新被绘制到浏览器之前,允许您与DOM本身进行各种高级交互)。当然,这只能在浏览器本身中发生,因此不会作为SSR的一部分发生,因为服务器只能生成标记,而不是DOM本身,如果使用SSR,这是在将其发送到浏览器之后完成的

你说与DOM的高级交互?怎么了??...是的-在这一点上,因为DOM已经更新了(但用户还没有在浏览器中看到更新),所以可以使用window.requestAnimationFrame截获屏幕上的实际绘制,然后做一些事情,比如测量将要输出的实际DOM元素,您可以对其执行进一步的状态更改,非常有用,例如将具有未知可变长度内容的元素设置为动画高度(因为您现在可以测量内容并为动画分配高度),或者在某些状态更改期间避免内容场景的闪烁。

不过,要非常小心地保护任何componentDid...中的状态更改,否则可能会导致无限循环,因为状态更改也会导致重新呈现,从而导致另一个componentDid...,并且不断地

票数 33
EN

Stack Overflow用户

发布于 2020-09-11 14:05:33

ComponentDidMount()方法只会更改类组件中的当前页面,而ComponentWillMount()会更改setStates()所影响的所有页面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29899116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档