componentDidMount()
紧跟在组件装载后(被插入树中)调用。要求的DOM节点初始化应该放到这里。若你需要从远端加载数据,这是一个适合实例化网络请求的好地方。
这个方法是建立任何订阅的一个好地方。如果你那么做了,别忘了在componentWillUnmount()
取消订阅。
在componentDidMount()
中,你 可以立即调用setState()
。它将会触发一次额外的渲染,但是它将在浏览器刷新屏幕之前发生。这保证了在此情况下即使render()
将会调用两次,用户也不会看到中间状态。谨慎使用这一模式,因为它常导致性能问题。在大多数情况下,你可以 在constructor()
中使用赋值初始状态来代替。然而,有些情况下必须这样,比如像模态框和工具提示框。这时,你需要先测量这些DOM节点,才能渲染依赖尺寸或者位置的某些东西。