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 (
                    <div>{msg}
                        <button onClick={this.handleClick}>CLICK ME</button>

                    </div>
                )
            }
            componentDidMount() {
                console.log("我是第四次执行");
            }
        }




        ReactDOM.render(<Demo name="syk" />, 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

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

最后附上一张官网图
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值