React 文档推荐componentDidMount
用于发出网络请求
componentDidMount()
在安装组件后立即调用。需要 DOM 节点的初始化应该在这里进行。如果您需要从远程端点加载数据,这是实例化网络请求的好地方。
调用setState()
此方法将触发额外的渲染,但保证在同一滴答期间刷新。这保证即使render()
在这种情况下将被调用两次,用户也不会看到中间状态。
根据以下情况componentWillMount
:
编辑:
这个生命周期废弃了,因为v16.3.0
的react,并且不再鼓励usage.However其重命名为UNSAFE_componentWillUpdate
和至少预计工作到V17的react
v16.3.0之前
在渲染发生之前,获取数据的异步调用不会返回。这意味着该组件将至少呈现一次空数据。
无法“暂停”渲染以等待数据到达。你不能componentWillMount
以setTimeout
某种方式返回Promise或争论。处理这个问题的正确方法是设置组件的初始状态,使其对渲染有效。
把它们加起来
在实践中,componentDidMount
是调用获取数据的最佳位置,原因有二:
- 使用 DidMount 可以清楚地表明,直到初始渲染之后才会加载数据。这会提醒您正确设置初始状态,这样您就不会以
undefined
导致错误的状态结束。
- 如果你需要在服务器上渲染你的应用程序,
componentWillMount
实际上会被调用两次——一次在服务器上,一次在客户端——这可能不是你想要的。放入数据加载代码
componentDidMount
将确保仅从客户端获取数据。