我在(React.Component)上看了Facebook的文档,它提到了componentWillMount
是如何在客户端/服务器上调用的,而componentDidMount
只在客户端上被调用。componentWillMount
对服务器做了什么?
发布于 2015-04-28 01:45:27
为了补充FakeRainBrigand所说的,componentWillMount
在服务器和客户端渲染React时被调用,但componentDidMount
只在客户端被调用。
发布于 2017-07-06 19:09:55
componentWillMount
在组件的初始render
之前完成,用于评估属性并基于它们执行任何额外的逻辑(通常也是为了更新状态),因此可以在服务器上执行,以便获得第一个服务器端呈现的标记。
componentDidMount
是在DOM更新后的初始render
之后执行的(但关键是在DOM更新被绘制到浏览器之前,允许您与DOM本身进行各种高级交互)。当然,这只能在浏览器本身中发生,因此不会作为SSR的一部分发生,因为服务器只能生成标记,而不是DOM本身,如果使用SSR,这是在将其发送到浏览器之后完成的
你说与DOM的高级交互?怎么了??...是的-在这一点上,因为DOM已经更新了(但用户还没有在浏览器中看到更新),所以可以使用window.requestAnimationFrame
截获屏幕上的实际绘制,然后做一些事情,比如测量将要输出的实际DOM元素,您可以对其执行进一步的状态更改,非常有用,例如将具有未知可变长度内容的元素设置为动画高度(因为您现在可以测量内容并为动画分配高度),或者在某些状态更改期间避免内容场景的闪烁。
不过,要非常小心地保护任何componentDid...
中的状态更改,否则可能会导致无限循环,因为状态更改也会导致重新呈现,从而导致另一个componentDid...
,并且不断地
发布于 2020-09-11 14:05:33
ComponentDidMount()
方法只会更改类组件中的当前页面,而ComponentWillMount()
会更改setStates()
所影响的所有页面
https://stackoverflow.com/questions/29899116
复制相似问题