Reactjs中componentDidMount和getInitialState之间的区别

时间:2015-06-17 21:43:48

标签: facebook reactjs flux

我知道getInitialState在组件的生命周期中被调用一次,并且在渲染组件时会调用componentDidMount。

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

1 个答案:

答案 0 :(得分:17)

在组件的第一次实例化时调用

getInitialState。它应该始终返回一个对象,该对象将是组件中this.state的初始状态。如果您不想定义getInitialState,则可能不必定义内部状态,在这种情况下不要定义它。

一旦组件实际挂载到DOM,就会调用

componentDidMount。但是,正如您所建议的那样,每次渲染组件时都没有。如果您正在寻找每次呈现组件时运行的内容(render除外),请查看componentWillUpdate和/或componentDidUpdate

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

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