为了账号安全,请及时绑定邮箱和手机立即绑定

为什么React文档建议在componentDidMount中而不是componentWill

/ 猿问

为什么React文档建议在componentDidMount中而不是componentWill

慕尼黑8549860 2019-11-11 14:49:37

标题说明了一切。我知道为什么componentDidMount它适用于需要DOM访问的任何内容,但是AJAX请求不一定或通常都需要这样做。


是什么赋予了?


查看完整描述

3 回答

?
MYYA

componentDidMount用于副作用。添加事件侦听器,AJAX,更改DOM等。


componentWillMount很少有用;特别是如果您关心服务器端渲染(添加事件侦听器会导致错误和泄漏,以及许多其他可能出错的东西)。


讨论componentWillMount从类组件中删除组件是因为它的作用与构造函数相同。它将保留在createClass组件上。


查看完整回答
反对 回复 2019-11-11
?
ABOUTYOU

一开始我也遇到了同样的问题。我决定尝试提出请求,componentWillMount但最终遇到各种小问题。

当ajax调用完成新数据时,我正在触发渲染。在某个时刻,组件的渲染比从服务器获得响应要花费更多的时间,并且此时ajax回调正在触发未安装组件的渲染。这是一种边缘情况,但可能还有更多,所以坚持下去是更安全的componentDidMount


查看完整回答
反对 回复 2019-11-11
?
绝地无双

根据文档设置,状态为componentWillMount不会触发重新渲染。如果AJAX调用没有阻塞,并且Promise成功返回一个更新组件状态的,则一旦组件被渲染,响应就有可能到达。由于componentWillMount不会触发重新渲染,因此您将不会具有预期的行为,即使用请求的数据渲染的组件。


如果您使用任何助焊剂库,并且所请求的数据最终存储在该组件已连接到(或从已连接的组件继承)的商店中,那么这将不是问题,因为该数据的接收很可能会更改道具最终。


查看完整回答
反对 回复 2019-11-11

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信