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 组件实例的生命周期中只会被调用一次。
我了解 getInitialState 在组件的生命周期中被调用一次,而 componentDidMount 在组件呈现时被调用。
那么这是否意味着两者在组件的生命周期中只会被调用一次?有什么区别?
getInitialState
在组件的第一次实例化时被调用。它应该总是 return 一个对象,这个对象将是组件内 this.state
的初始状态。如果你不想,你不必定义 getInitialState
,也许你不需要内部状态,在这种情况下不要定义它。
componentDidMount
。但是,正如您所建议的那样,每次渲染组件时都不会。如果您正在寻找每次渲染组件时运行的东西(render
除外),请查看 componentWillUpdate and/or componentDidUpdate.
至于主要区别,getInitialState
完全应该 return 该组件的初始状态,没有别的。该函数在组件实际渲染到 DOM 之前很久就执行了。 componentDidMount
在组件渲染到 DOM 后直接执行,因此例如您现在可以执行需要组件首先在 DOM 上的操作,例如使用 this.getDOMNode()
检查组件根 HTML 元素的确切高度,或修改它的滚动位置。
不过你是对的,两者在你的 React 组件实例的生命周期中只会被调用一次。