React 生命周期

React 生命周期

这篇文章,我们来聊一聊在React中的生命周期。首先我们明确一点,在React中,函数式组件是没有生命周期的。谈到生命周期,都是关于类组件的!

生命周期官方网址

React.Component – React (docschina.org)

生命周期常用的有以下

constructor()

render()

componentDidMount()

componentWillUnmount()

挂载阶段

​ 生命周期执行的顺序为

constructor() ==> static getDerivedStateFromProps ==> render() ==>componentDidMount()

constructor()

在组件挂载之前,需要调用构造函数

static getDerivedStateFromProps()

static getDerivedStateFromProps(props, state)

getDerivedStateFromProps 会在调用 render 方法之前调用,并且在初始挂载及后续更新时都会被调用。它应返回一个对象来更新 state,如果返回 null 则不更新任何内容。

非常地不常用,为什么不常用呢?

​ 原因很简单,如果你想要修改state中的值,可以使用props!

render()

渲染数据

componentDidMount()

在组件挂载完成之后立即执行,通常用来请求网络数据。类似于Vue中的Mounted(()=>{})

挂载阶段一个综合示例:

 class Demo extends React.Component {
            constructor() {
                super()
                console.log("我是第一次");
            }
            static getDerivedStateFromProps(props, state) {
                console.log("我是第二次", props, state);
                return null;//这里必须要传一个默认值
                //如果传一个对象的话,则要修改state中的数据
            }
            state = {
                msg: "东星耀阳"
            }
            handleClick = () => {
                this.setState({
                    msg: "吕德华"
                })
            }
            render() {
                console.log("我是第三次");
                const { msg } = this.state
                return (
                    
{msg}
) } componentDidMount() { console.log("我是第四次执行"); } } ReactDOM.render(, document.querySelector('.box1'))

渲染更新阶段

这个阶段的生命周期函数主要经过

static getDerivedStateFromProps() ==> shouldComponentUpdate() ==>render() ==>

getSnapshotBeforeUpdate() ===>componentDidUpdate()

shouldComponentUpdate()

shouldComponentUpdate(nextProps, nextState)

首次渲染,不会调用此方法

需要设置返回值。如果返回true,则允许更新视图,如果返回为fasle,则不允许更新视图

getSnapshotBeforeUpdate()

getSnapshotBeforeUpdate(prevProps,prevstate)

在发生更改之前,获取一下上次的dom信息、

此生命周期的任何返回值将作为参数传递给 componentDidUpdate()

componentDidUpdate()

componentDidUpdate(prevProps, prevState, snapshot)

第三个参数就是getSnapshotBeforeUpdate()的返回值

卸载阶段

componentWillUnmount

执行一下 清除定时器之类的操作!!!!

最后附上一张官网图
React 生命周期_第1张图片

你可能感兴趣的:(react.js,react.js,javascript,前端)