React的生命周期

在React中也有生命周期,但是生命周期只存在于Class声明的组件中,在Hooks组件是没有的。这里只谈论React在版本16.4之后的生命周期。
image

生命周期表示这一个组件的出生到坟墓所经历的过程,这里先展示5个最为常用的生命周期。

常用生命周期

挂载时会触发3个生命周期,分别是constructor, render和 componentDidMount

constructor

实例过程中自动调用的方法,在方法内部通过super关键字获取来自父组件的props在该方法中,通常的操作作为初始化state状态或者在this上挂载方法

render

类组件必须实现的方法,用于渲染DOM结构,可以访问组件state与prop属性,这是组件的第一次渲染DOM结构,此时可以访问组件的state和prop属性

componentDidMount

会在组件挂载后(插入DOM树中)立即调用。依赖于DOM节点的初始化应该放在这里。如需网络请求获取数据,此处是实例化请求的好地方。

更新时

更新时会触发render和componentDidUpdate

render

当数据更新,需要渲染视图,就一定会调用render,在render之后会执行componentDidUpdate

componentDidUpdate

componentDidUpdate()会在更新后被立即调用。首次渲染不会执行此方法。

卸载时componentWillUnmount

卸载时只会调用componentWillUnmount
componentWillUnmount()会在组件卸载及销毁之前直接调用。在此方法中执行必要的清理操作,例如,清除timer,取消网络请求或清除在componentDidMount()中创建的订阅等。

其他不常用的生命周期

image

getDerivedStateFromProps

getDerivedStateFromProps会在调用render方法之前调用,并且在初始挂载及后续更新时都会被调用。它应返回一个对象来更新state,如果返回null则不会更新任何内容。
在每次render方法前调用,第一个参数为即将更新的props,第二个参数为上一个状态的state,可以比较props和state来加一些限制条件,防止无用的state更新

shouldComponentUpdate

这个生命周期函数在更新时的render前运行,如果这个函数返回false,则不会调用render

getSnapshotBeforeUpdate

这个方法在render之后执行,它使得组件能在发生更改之前从DOM中捕获一些信息(例如,滚动位置)。此生命周期方法的任何返回值将作为参数传递给componentDidUpdate()。

posted @ 2022-12-12 10:29  举个栗子走天下  阅读(149)  评论(0编辑  收藏  举报