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

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

最佳答案

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

一旦组件实际安装到DOM,就会调用componentDidMount。但是,不像您建议的那样,每次渲染组件时。如果您希望每次渲染组件时都运行某些内容(render除外),请查看componentWillUpdate和/或componentDidUpdate

至于主要区别,getInitialState完全应按原样返回该组件的初始状态,没有别的。该函数早在组件实际呈现到DOM之前就已执行。 componentDidMount是在将组件呈现到DOM之后直接执行的,因此,例如,您现在可以执行要求组件首先位于DOM上的操作,例如使用this.getDOMNode()检查组件根的确切高度HTML元素,或修改其滚动位置。

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

09-18 16:27