为什么React文档build议在componentDidMount中做AJAX,而不是componentWillMount?

标题说明了一切。 我理解为什么componentDidMount适用于任何需要DOM访问的东西,但是AJAX请求不一定或通常需要这个。

是什么赋予了?

componentDidMount是用于副作用的。 添加事件侦听器,AJAX,突变DOM等

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

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

我也有同样的问题。 我决定尝试在componentWillMount提出请求,但最终会出现各种小问题。

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

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

如果您使用任何stream量库,并且所需数据最终在组件中连接(或从连接组件inheritance),这不会成为问题,因为接收数据很可能会改变道具最终。