我在https://facebook.github.io/react/docs/component-specs.html上查看了Facebook的文档,它提到了如何在客户端/服务器上调用componentWillMount,而componentDidMount仅在客户端上调用.componentWillMount对服务器做了什么?
Bri*_*and 69
componentWillMount本质上是构造函数.您可以设置不影响渲染的实例属性,同步从存储中提取数据以及使用setState设置State,以及设置组件时需要运行的其他简单的无副作用代码.
它很少需要,而且根本不需要ES6课程.
Lir*_*mer 63
该constructor方法是不一样的componentWillMount.
根据Redux的作者,从构造函数调度操作是有风险的,因为它可能导致在渲染时改变状态.
但是,派遣componentWillMount就好了.
来自github问题:
当一个组件的构造函数中的dispatch()导致另一个组件内的setState()时,会发生这种情况.React跟踪这些警告的"当前所有者" - 它认为我们在构造函数中调用setState(),当技术构造函数在应用程序的某个其他部分内导致setState()时.我认为我们不应该处理这个 - 只是React尽力做好自己的工作.正如您所正确指出的那样,解决方案是在componentWillMount()内调度().
And*_*ahl 35
要添加到FakeRainBrigand所说的内容,componentWillMount在服务器和客户端上呈现React时会被调用,但componentDidMount只在客户端上调用.
ale*_*ill 28
componentWillMount在INITIAL之前完成render的部件的,并用于评估道具和做在他们基于(通常也更新状态)的任何额外的逻辑,并且因此可以在服务器上,以便得到所述第一服务器侧呈现的标记来进行.
componentDidMountrender在更新DOM 之后的初始时执行(但关键是在此DOM更新被绘制到浏览器之前,允许您与DOM本身进行各种高级交互).这当然只能在浏览器本身发生,所以不会作为SSR的一部分发生,因为服务器只能生成标记而不是DOM本身,这是在使用SSR发送到浏览器后完成的.
你说与DOM的高级互动?Whaaaat ?? ...是的-在这一点上,因为DOM已经更新(但用户还没有看到在浏览器中还没有更新),可以通过使用拦截实际画到屏幕上window.requestAnimationFrame,然后做这样的事情措施的实际DOM元素将被输出,向其中可以执行进一步的状态变化,例如动画到具有未知长度可变内容的元件的高度(如你现在可以测量的内容和由高度分配给动画)超级有用,或者在某些状态更改期间避免内容闪现.
要非常小心,虽然保守国家改变任何componentDid...作为否则会造成无限循环,因为状态的改变也将导致重新绘制,因此另一个componentDid...和和和
小智 9
根据文档(https://facebook.github.io/react/docs/react-component.html)
前缀的方法将被称为右侧前三长两短
事件发生后,以do为前缀的方法称为right.
| 归档时间: |
|
| 查看次数: |
48903 次 |
| 最近记录: |