我理解为什么componentDidMount
适用于需要访问 DOM 的任何内容,但 AJAX 请求不一定或通常需要这样做。
是什么赋予了?
我理解为什么componentDidMount
适用于需要访问 DOM 的任何内容,但 AJAX 请求不一定或通常需要这样做。
是什么赋予了?
componentDidMount
是为了副作用。添加事件侦听器、AJAX、改变 DOM 等。
componentWillMount
很少有用;特别是如果您关心服务器端渲染(添加事件侦听器会导致错误和泄漏,以及许多其他可能出错的东西)。
有关于componentWillMount
从类组件中删除的讨论,因为它与构造函数的用途相同。它将保留在createClass
组件上。
我一开始也有同样的问题。我决定尝试提出请求,componentWillMount
但最终遇到了各种小问题。
当 ajax 调用完成新数据时,我正在触发渲染。在某些时候,组件的渲染比从服务器获取响应花费的时间更多,此时 ajax 回调触发了卸载组件的渲染。这是一种边缘情况,但可能还有更多,因此坚持使用componentDidMount
.
根据文档设置状态componentWillMount
不会触发重新渲染。如果 AJAX 调用没有阻塞,并且您Promise
在成功时返回更新组件状态的 ,则有可能在组件呈现后响应到达。由于componentWillMount
不会触发重新渲染,您将不会有您期望的行为,即使用请求的数据渲染组件。
如果您使用任何通量库并且请求的数据最终在组件所连接的商店中(或从连接的组件继承),这将不是问题,因为该数据的接收很可能会改变props最终。