Reactjs中componentDidMount和getInitialState之间的区别

wol*_*ang 3 facebook flux reactjs

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

那么这是否意味着它们将在组件的生命周期中被调用一次?有什么不同?

Mik*_*ver 17

getInitialState在组件的第一次实例化时调用.它应该始终返回一个对象,该对象将是this.state组件内的初始状态.您不必定义getInitialState是否不想要,也许您不需要内部状态,在这种情况下不要定义它.

componentDidMount一旦组件实际安装到DOM,就会调用它.但是,正如您所建议的那样,每次渲染组件时都没有.如果您正在寻找每次渲染组件时运行的东西(除了render),请查看componentWillUpdate和/或componentDidUpdate.

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

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