react生命周期

react生命周期主要有 三个阶段

在这里插入图片描述

挂载期:一个组件实例初次被创建的过程。
更新期:组件在创建后再次渲染的过程。
卸载期:组件在使用完后被销毁的过程。

挂载阶段

  • 01 constructor 构造函数
   static getDerivedStateFromProps(nextProps, prevState) {
    // 当组件的props发送变化时候 ,执行回调函数
    // 当props更新用Props更新state
    // console.log("挂载:-02-getDerivedStateFromProps");
    console.log("更新:01-getDerivedStateFromProps")
    return nextProps;
   }
  • 02 static getDerivedStateFromProps
 shouldComponentUpdate(nextProps, nextState) {
    console.log("更新:02 组件是否需要更新");
    return true; //通常用做优化组件,返回true更新,false不更新
   }
  • 03 render 渲染函数
 render() {
        // console.log("挂载:03-render选项")
        console.log("更新:03-render")
        return ( <div>
            <h1>生命周期</h1>
            <button onClick={()=>this.setState({num:this.state.num+1})}>{this.state.num}</button>
        </div> );
    }
  • 04 componentDidMount 组件已经挂载
componentDidMount() {
        // console.log("挂载-04 组件已经挂载")
        // 作用:操作dom,发起ajax ,添加事件,开启定时器
    }

更新阶段

  • 01 static getDerivedStateFromProps
static getDerivedStateFromProps(nextProps, prevState) {
    // 当组件的props发送变化时候 ,执行回调函数
    // 当props更新用Props更新state
    // console.log("挂载:-02-getDerivedStateFromProps");
    console.log("更新:01-getDerivedStateFromProps")
    return nextProps;
   }
  • 02 shouldCompoentUpdate 组件是否更新(返回true才更新)
shouldComponentUpdate(nextProps, nextState) {
    console.log("更新:02 组件是否需要更新");
    return true; //通常用做优化组件,返回true更新,false不更新
   }
  • 03 render 渲染
 render() {
        // console.log("挂载:03-render选项")
        console.log("更新:03-render")
        return ( <div>
            <h1>生命周期</h1>
            <button onClick={()=>this.setState({num:this.state.num+1})}>{this.state.num}</button>
        </div> );
    }
  • 04 getSnapshotBeforeUpdate 更新前获取快照(返回值是componentDidUpdate第三个参数)
    getSnapshotBeforeUpdate(prevProps, prevState) {
        console.log("更新:04 getSnapshotBeforeUpdate")
        // 获取组件的快照,在更新前
        // 返回的值是下个生命周期的第单个参数
        return {name:"mimu",age:17}
    }
  • 05 componentDidUpdate 组件已经更新
componentDidUpdate(prevProps, prevState,snap) {
        // 组件已经更新
        console.log("更新:05componentDidUpdate",snap)
    }

卸载阶段

  • 01 componetWillUnmount 组件将要卸载
componentWillUnmount(){
        // console.log("组件将要卸载")
    }
  • 实例一个简单生命周期的例子
import React, { Component } from 'react';
class Life extends Component {
    constructor(props) {
        super(props);
        // console.log("挂载-01-constructor");
    }
   static getDerivedStateFromProps(nextProps, prevState) {
    // 当组件的props发送变化时候 ,执行回调函数
    // 当props更新用Props更新state
    // console.log("挂载:-02-getDerivedStateFromProps");
    console.log("更新:01-getDerivedStateFromProps")
    return nextProps;
   }
   shouldComponentUpdate(nextProps, nextState) {
    console.log("更新:02 组件是否需要更新");
    return true; //通常用做优化组件,返回true更新,false不更新
   }
    state = { num:5 }
    render() {
        // console.log("挂载:03-render选项")
        console.log("更新:03-render")
        return ( <div>
            <h1>生命周期</h1>
            <button onClick={()=>this.setState({num:this.state.num+1})}>{this.state.num}</button>
        </div> );
    }
    getSnapshotBeforeUpdate(prevProps, prevState) {
        console.log("更新:04 getSnapshotBeforeUpdate")
        // 获取组件的快照,在更新前
        // 返回的值是下个生命周期的第单个参数
        return {name:"mimu",age:17}
    }
    componentDidUpdate(prevProps, prevState,snap) {
        // 组件已经更新
        console.log("更新:05componentDidUpdate",snap)
    }
    componentDidMount() {
        // console.log("挂载-04 组件已经挂载")
        // 作用:操作dom,发起ajax ,添加事件,开启定时器
    }
    componentWillUnmount(){
        // console.log("组件将要卸载")
    }
}
 
export default Life;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值