Reactjs 中 componentDidMount 和 getInitialState 的区别

difference between componentDidMount and getInitialState in Reactjs

我了解 getInitialState 在组件的生命周期中被调用一次,而 componentDidMount 在组件呈现时被调用。

那么这是否意味着两者在组件的生命周期中只会被调用一次?有什么区别?

getInitialState 在组件的第一次实例化时被调用。它应该总是 return 一个对象,这个对象将是组件内 this.state 的初始状态。如果你不想,你不必定义 getInitialState,也许你不需要内部状态,在这种情况下不要定义它。

一旦组件实际安装到 DOM,就会调用

componentDidMount。但是,正如您所建议的那样,每次渲染组件时都不会。如果您正在寻找每次渲染组件时运行的东西(render 除外),请查看 componentWillUpdate and/or componentDidUpdate.

至于主要区别,getInitialState 完全应该 return 该组件的初始状态,没有别的。该函数在组件实际渲染到 DOM 之前很久就执行了。 componentDidMount 在组件渲染到 DOM 后直接执行,因此例如您现在可以执行需要组件首先在 DOM 上的操作,例如使用 this.getDOMNode() 检查组件根 HTML 元素的确切高度,或修改它的滚动位置。

不过你是对的,两者在你的 React 组件实例的生命周期中只会被调用一次。