首页 > 其他分享 >01-React-生命周期-执行时机

01-React-生命周期-执行时机

时间:2023-09-23 12:34:06浏览次数:35  
标签:生命周期 console log render App React 01

生命周期概述

事物从生到死的过程, 我们称之为生命周期

什么是生命周期方法

事物在从生到死过程中, 在特定时间节点调用的方法, 我们称之为生命周期方法

例如像我们人类,从生到死的过程有这么几个特定的时间点,就是上,幼儿园,小学,中学...

React 组件生命周期方法

组件从生到死的过程, 在特定的时间节点调用的方法, 我们称之为组件的生命周期方法

官方文档:https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

image-20220429094852545

  • constructor 函数: 组件被创建的时候, 就会调用
  • render 函数: 渲染组件的时候, 就会调用
  • componentDidMount 函数:组件已经挂载到 DOM 上时,就会回调
  • componentDidUpdate 函数:组件已经发生了更新时,就会回调
  • componentWillUnmount 函数:组件即将被移除时,就会回调

经过了如上的介绍方法之后,我们再来一一的写个 demo 试一下就好了,该知识点就可以过掉了。

挂载时阶段

App.js:

import React from 'react';

class Home extends React.Component {
    constructor(props) {
        super(props);
        console.log('挂载时-constructor');
    }

    render() {
        console.log('挂载时-render');
        return (
            <div>
            </div>
        )
    }
    componentDidMount() {
        console.log('挂载时-componentDidMount');
    }
}

class App extends React.Component {
    render() {
        return (
            <div>
                <Home/>
            </div>
        )
    }
}

export default App;

image-20220429112644738

更新时阶段

App.js:

import React from 'react';

class Home extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            count: 0
        }
    }

    render() {
        if (this.state.count === 0) {
            console.log('挂载时-render');
        } else {
            console.log('更新时-render');
        }
        return (
            <div>
                <button onClick={() => {
                    this.btnClick()
                }}>Home按钮
                </button>
            </div>
        )
    }

    componentDidUpdate(prevProps, prevState, snapshot) {
        console.log('更新时-componentDidUpdate');
    }

    btnClick() {
        this.setState({
            count: 1
        });
    }
}

class App extends React.Component {
    render() {
        return (
            <div>
                <Home/>
            </div>
        )
    }
}

export default App;

image-20220429134554011

卸载时阶段

App.js:

import React from 'react';

class Home extends React.Component {
    render() {
        return (
            <div>
                <p>Home</p>
            </div>
        )
    }
    componentWillUnmount() {
        console.log('卸载时-componentWillUnmount');
    }
}

class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            flag: true
        }
    }

    render() {
        return (
            <div>
                {this.state.flag && <Home/>}
                <button onClick={() => {
                    this.btnClick()
                }}>App按钮
                </button>
            </div>
        )
    }

    btnClick() {
        this.setState({
            flag: false
        });
    }
}

export default App;

image-20220429113218497

标签:生命周期,console,log,render,App,React,01
From: https://www.cnblogs.com/lzAurora/p/17724194.html

相关文章

  • 01-React-父子组件通讯-函数式组件
    在了解父子组件通讯这个知识点的时候,首先要说明清楚一点内容就是什么是父组件什么是子组件,在上一篇React-组件开篇当中我们在App.js类组件当中使用到了其它的一些组件,那么App就是父组件,被App所使用的就是子组件,了解了什么是父子组件之后,介绍要来介绍一下它们之间该如何进......
  • 01-React-父子组件通讯
    父子组件通讯父组件将方法传递给子组件,在React当中也会将父组件传递的,数据和函数信息直接存放在子组件当中,的Props属性对象当中React的父子组件通讯的实现其实就是利用,函数的互相调用进行实现完成的Header.js:importReactfrom'react';import'./Header.css';impo......
  • 01-React-组件-TransitionGroup
    TransitionGroup的作用,博主用通俗易懂的话来讲就是一个一组元素添加动画,在我们的实际开发当中有时可能会有这么一个需求就是,在一个页面上,有添加和删除,在做这些操作的时候需要都带上动画,那么这个时候就可以使用TransitionGroup来快速实现。案例App.js:importReactfrom'rea......
  • P6667 [清华集训2016] 如何优雅地求和 -Binomial Sum
    题面有一个多项式函数\(f(x)\),最高次幂为\(x^m\),定义变换\(Q\):\[Q(f,n,x)=\sum_{k=0}^{n}f(k)\binom{n}{k}x^k(1-x)^{n-k}\]现在给定函数\(f\)和\(n,x\),求\(Q(f,n,x)\bmod998244353\)。出于某种原因,函数\(f\)由点值形式给出,即给定\(a_0,a_1,⋯,a_m\)共\(m+1\)个......
  • Flutter/Dart第01天:Dart安装和初体验
    本博客原地址:https://ntopic.cn/p/2023092301/Dart的安装方式有几种:一种是下载源代码,然后编译安装;一种是通过包管理工具进行安装。Dart官方网站分表列出了针对Windows、Linux和MacOS的安装方式:https://dart.dev/get-dart我下面在个人MacOS上介绍brew包管理工具安装方法和过程:......
  • React面试
    1.什么是虚拟DOM?虚拟DOM是真实DOM在内存中的表示,ul的表示形式保存在内存中,并且与实际的DOM同步,这是一个发生在渲染函数被调用和元素在屏幕上显示的步骤,整个过程被称为调和2.类组件和函数组件之间的区别是什么?类组件可以使用其他特性,如状态和生命周期钩子,并且他有this函数组件只......
  • 自我介绍102101631
    自我介绍我叫陈康杰,学号是102101631我来自fzu我平常喜欢看一些历史文我最喜欢的歌手是周杰伦我最喜欢的歌曲是《一路向北》食堂里我最喜欢的是烤盘饭(虽然每次吃饱都花了很多的币)......
  • 用户故事与敏捷开发 读书笔记 01
    软件需求是一个沟通问题,一旦任何一方在沟通中把持绝对地位,项目就会遭受损失。我们需要一种协同工作的方式,让双方都不占绝对主导地位,共同面对感情用事和办公室政治化的资源分配问题。什么是用户故事?每个用户故事代表了一个独立的功能,即用户在一个单一环境中可能做的事情。用户故......
  • React的onChange事件支持冒泡
    React的合成事件,所有事件都冒泡到document,带来的一个方便的地方就是,原本原生事件不支持冒泡的,在React中都支持冒泡例如focus,blur,change,submit,reset,select等事件不支持冒泡,但是在React中,可以使用同名的合成事件来支持冒泡,这样可以带来一个好处,减少事件挂载例如对radio组挂......
  • POI2018
    P5955Pionek题意给出\(n\)个平面向量,要求选择一些向量使它们和的模长最大,输出最大模长。题解假设已知答案向量方向,观察题目可以发现,只有在答案向量方向投影为正的向量才会对结果产生贡献。由此考虑枚举所有方向。对所有向量的极角排序,排序后可以确定选取的向量一定是连续......