首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么React文档推荐在componentDidMount中使用AJAX,而不是componentWillMount?

为什么React文档推荐在componentDidMount中使用AJAX,而不是componentWillMount?
EN

Stack Overflow用户
提问于 2014-11-26 08:32:07
回答 3查看 25.2K关注 0票数 102

我理解为什么componentDidMount适合任何需要DOM访问的东西,但是AJAX请求不一定也通常不需要它。

怎么回事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-26 08:47:22

componentDidMount是用于副作用的。添加事件侦听器、AJAX、修改DOM等。

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

有关于从类组件中删除componentWillMount的讨论,因为它与构造函数具有相同的用途。它将保留在createClass组件上。

票数 62
EN

Stack Overflow用户

发布于 2014-11-26 09:31:54

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

当ajax调用使用新数据结束时,我触发了渲染。在某些时候,组件的渲染比从服务器获取响应要花费更多的时间,在这一点上,ajax回调触发了在未挂载的组件上渲染。这是一种边缘情况,但可能还有更多情况,所以坚持使用componentDidMount更安全。

票数 36
EN

Stack Overflow用户

发布于 2017-04-11 16:21:05

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

如果您使用任何flux库,并且请求的数据最终存储在组件连接到的存储中(或从连接的组件继承),这将不会是一个问题,因为数据的接收很可能最终会改变属性。

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

https://stackoverflow.com/questions/27139366

复制
相关文章

相似问题

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