[React]组件的生命周期

晶圆测试(wafer sort)全流程解析:从探针卡到良率统计的实战指南 本文详细解析了晶圆测试(wafer sort)的全流程,从探针卡选型到良率统计的实战指南。涵盖了12英寸先进制程产线的关键技术,包括探针卡系统、测试程序开发、产线自动化集成及数据分析,特别聚焦多站点并行测试的时序优化和接触阻抗异常排查,帮助工程师提升测试效率与准确性。 阅读详情

组件的生命周期

组件本质上是伏态机,输入确定,输出一定确定。
状态发生转换时会触发不同的钩子函数,从而让开发者有机会做出响应。
可以用事件的思国思路来理解状态。

初始化->运行中->销毁

初始化

getDefaultProps(只会在第一个实例初始化时被调用)->getInitialState->componentWillMount->render->componentDidMount

运行中

componentWillReceiveProps->shouldComponentUpdate->componentWillUpdate->render->componentDidUpdate

销毁

componentWillUnmount

初始化阶段

初始化阶段可以使用的函数:

  • getDefaultProps: 只调用一次,实例之间共享引用
  • getInitialState: 初始化每个实例特有的状态
  • componentWillMount: render之前最后一次修改状态的机会
  • render: 只能访问this.props和this.state,只有一个顶层组件(不能返回数组),不允许修改状态和DOM输出
  • componentDidMount: 成功render并渲染完成真实DOM后触发,可以修改DOM

实例演示:

    var style = {
        color: "red",
        border: "1px solid #000",
    };

    var HelloWorld = React.createClass({
        getDefaultProps: function () {
            console.log('getDefaultProps, 1')
        },
        getInitialState: function () {
            console.log('getInitialState, 2');
            return null;
        },
        componentWillMount: function () {
            console.log('componentWillMount, 3');
        },
        render: function () {
            console.log('render, 4');
            return <p ref="childp">Hello, {(function (obj) {
                if (obj.props.name) {
                    return obj.props.name;
                } else {
                    return "World";
                }
            })(this)}</p>;
        },
        componentDidMount: function () {
            console.log('componentDidMount, 5');
        }
    });
    ReactDOM.render(<div style={style}><HelloWorld></HelloWorld></div>, document.body)
    $(function () {
        var count = 0;
        var style = {
            color: "red",
            border: "1px solid #000",
        };

        var HelloWorld = React.createClass({
            getDefaultProps: function () {
                console.log('getDefaultProps, 1')
                return {name: "Tom"};
            },
            getInitialState: function () {
                console.log('getInitialState, 2');
                return {myCount: count++, ready: false};
            },
            componentWillMount: function () {
                console.log('componentWillMount, 3');
                this.setState({ready: true});
            },
            render: function () {
                console.log('render, 4');
                return <p ref="childp">Hello, {this.props.name ? this.props.name : "World"}<br/>{"" + this.state.ready + count}</p>;
            },
            componentDidMount: function () {
                console.log('componentDidMount, 5');
                $(ReactDOM.findDOMNode(this)).append('surprise!');
            }
        });
        ReactDOM.render(<div style={style}><HelloWorld></HelloWorld><br/><HelloWorld></HelloWorld></div>, document.body);
    })();

运行中阶段

运行中阶段可以使用的函数:
- componentWillReceiveProps: 父组件修改属性触发,可以修改新属性、修改状态
- shouldComponentUpdate: 返回false会阻止render调用
- componentWillUpdate: 不能合修改属性和状态
- render: 只能访问this.props和this.state,只有一个顶层组件,不允许修改状态和DOM输出
- componentDidUpdate: 可以修改DOM

实例演示:

  var style = {
        color: "red",
        border: "1px solid #000",
    };

    var HelloWorld = React.createClass({
        componentWillReceiveProps: function () {
            console.log('componentWillReceiveProps 1');
        },
        shouldComponentUpdate: function () {
            console.log('shouldComponentUpdate 2');
            return true;
        },
        componentWillUpdate: function () {
            console.log('componentWillUpdate 3');
        },
        render: function () {
            console.log('render 4');
            return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
        },
        componentDidUpdate: function () {
            console.log('componentDidUpdate 5');
        },
    });
    var HelloUniverse = React.createClass({
        getInitialState: function () {
            return {name: ''};
        },
        handleChange: function (event) {
            this.setState({name: event.target.value});
        },
        render: function () {
            return <div>
                <HelloWorld name={this.state.name}></HelloWorld>
                <br/>
                <input type="text" onChange={this.handleChange}/>
            </div>;
        },
    });

    ReactDOM.render(<div style={style}><HelloUniverse></HelloUniverse></div>, document.body);

父组件改变子组件的属性:

    $(document).ready(function() {
        var style = {
            color: "red",
            border: "1px solid #000",
        };

        var HelloWorld = React.createClass({
            componentWillReceiveProps: function (newProps) {
                console.log('componentWillReceiveProps 1');
                console.log(newProps);
            },
            shouldComponentUpdate: function () {
                console.log('shouldComponentUpdate 2');
                return true;
            },
            componentWillUpdate: function () {
                console.log('componentWillUpdate 3');
            },
            render: function () {
                console.log('render 4');
                return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
            },
            componentDidUpdate: function () {
                console.log('componentDidUpdate 5');
                $(ReactDOM.findDOMNode(this)).append('surprise!');
            },
        });
        var HelloUniverse = React.createClass({
            getInitialState: function () {
                return {name: ''};
            },
            handleChange: function (event) {
                this.setState({name: event.target.value});
            },
            render: function () {
                return <div>
                    <HelloWorld name={this.state.name}></HelloWorld>
                    <br/>
                    <input type="text" onChange={this.handleChange}/>
                </div>;
            },
        });

        ReactDOM.render(<div style={style}><HelloUniverse></HelloUniverse></div>, document.body);
    });

销毁阶段

    $(document).ready(function() {
        var style = {
            color: "red",
            border: "1px solid #000",
        };

        var HelloWorld = React.createClass({
            render: function () {
                console.log('render 4');
                return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
            },
            componentWillUnmount: function() {
                console.log("BOOOOOOOOOOOOOOOOOOOOOM!");
            },
        });
        var HelloUniverse = React.createClass({
            getInitialState: function () {
                return {name: ''};
            },
            handleChange: function (event) {
                this.setState({name: event.target.value});
            },
            render: function () {
                if(this.state.name == '123') {
                    return <div>123</div>;
                }
                return <div>
                    <HelloWorld name={this.state.name}></HelloWorld>
                    <br/>
                    <input type="text" onChange={this.handleChange}/>
                </div>;
            },
        });

        ReactDOM.render(<div style={style}><HelloUniverse></HelloUniverse></div>, document.body);
    });

上面示例中,一开始生成HelloWorld组件,先生成HelloWorld组件,当我们输入123,生成

123
,相当于删除了HelloWoorld组件。

    $(document).ready(function () {
        var style = {
            color: "red",
            border: "1px solid #000",
        };

        var HelloWorld = React.createClass({
            render: function () {
                console.log('render 4');
                return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
            },
            componentWillUnmount: function () {
                console.log("BOOOOOOOOOOOOOOOOOOOOOM!");
            },
        });
        var HelloUniverse = React.createClass({
            getInitialState: function () {
                return {name: ''};
            },
            handleChange: function (event) {
                if (event.target.value == "123") {
                    ReactDOM.unmountComponentAtNode(document.getElementsByTagName('body')[0]);  //参数为render时第二个参数节点,即下面的body
                    return;
                }
                this.setState({name: event.target.value});
            },
            render: function () {
                return <div>
                    <HelloWorld name={this.state.name}></HelloWorld>
                    <br/>
                    <input type="text" onChange={this.handleChange}/>
                </div>;
            },
        });

        ReactDOM.render(<div style={style}><HelloUniverse></HelloUniverse></div>, document.body);
    });

上面示例值接删除了该DOM节点。

SpringAI系列 - MCP篇(二) - MCP Server Boot Starter 此处需注意之前的。 阅读详情

相关推荐

LDO稳定性分析

根据补偿方式和拓扑结构的不同,三个极点之间的相互位置有可能发生变化,但 是 LDO 通常采用较大的输出电容 Cout,以及较大的调整管也会导致较大的 Cpar, 所以 p1、p2 通常位于较低的频率处,而 p3 和 z1 则由于 Resr较小会位于较高的频 率处。不过幸运的是,对于较大的 Cout来说,只要选择合适的 Resr,就可以将左半平面零点 Z1 的频率降低,甚至使 Z1 进入单位增益带宽内,左半平面零点的进入将对相位有所改善,这不仅可以消除振荡的风险,还可以在单位增益频率处得到较好的相位裕度。

模拟芯片设计 1590

React Native实战之ReactJS组件生命周期

React 组件就是一个状态机,它接受两个输入参数: this.props 和 this.state,返回一个虚拟DOM。React组件的生命周期分几个阶段,每个阶段会有若干个回调函数可以响应不同的时刻。1.创建阶段getDefaultProps:处理props的默认值 在React.createClass调用 2.实例化阶段getInitialState: 获取 this.state 的默认值co

u014732103的博客 358

地质工程师必备:Dips软件从数据导入到主结构面分析的完整流程解析

本文详细解析了地质工程师使用Dips软件进行主结构面分析的完整流程。从数据准备与导入、结构面分组与扇形区划分,到主结构面计算与工程解读,系统阐述了如何将野外节理数据转化为控制岩体稳定性的关键信息。重点介绍了利用等值线图识别优势组、计算统计主值及其置信椭圆,并强调了地质判断与工程应用结合的重要性。

table的专栏 340

reactjs生命周期_如何在ReactJS中了解组件的生命周期方法

reactjs生命周期In this article, we are going to explore the lifecycle methods of ReactJS. But, before moving ahead to React’s different lifecycle methods, we should understand what it is. 在本文中,我们将探索ReactJ...

cumian8165的博客 407

AISHELL-1中文语音数据集实战:从下载到训练你的第一个ASR模型(附完整代码)

本文详细介绍了如何使用AISHELL-1中文语音数据集从数据准备到训练端到端语音识别模型的全流程。AISHELL-1作为国内首个开源的普通话语音数据集,包含178小时高质量录音,适合中文自动语音识别(ASR)系统开发。文章涵盖数据下载、预处理、Conformer-CTC模型训练、评估及优化策略,并附完整代码实现。

garlic的博客 1115

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

波士顿咨询最新发布《2025年全球支付报告:未来不稳定》:到2029 年,支付收入将预计达到 2.4 万亿美元

face light~ 917

【ReactJS】通过一个例子学习React组件的生命周期

源代码<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"

'Ablaze 的专栏 1885

视觉SLAM与激光SLAM简单对比分析

本文旨在梳理目前较为前沿的SLAM技术,包括激光和视觉,主要从精度和实时性两个方面对算法进系评价。对于激光SLAM了解不深,后期需要补充相关算法的核心思想与算法框架。有问题请大佬们随时留言,我再改正。

超爱吃小蛋糕的66的博客 3854

reactjs生命周期ajax网络,ReactJS 组件生命周期

ReactJS 组件生命周期在本章中,我们将讨论组件生命周期方法。生命周期方法componentWillMount 在渲染之前在服务器和客户端上均已执行。componentDidMount仅在客户端执行第一个渲染之后执行。这是应该进行AJAX请求和DOM或状态更新的地方。此方法还用于与其他JavaScript框架以及延迟执行的任何函数(例如setTimeout或)集成setInterval。我们正...

weixin_28772667的博客 229

Google Gemini 模型本地可视化

Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用!Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。Gemini Pro的表现超越了其他同类模型,当前版本配备了 32K 文本上下文窗口,可免费使用,且其定价将十分有竞争力。Gemini Pro具备丰富的功能:函数调用、数据嵌入、语义检索、自定义知识嵌入以及聊天功能。

HJ_blog 1246

Boot过程相关镜像详解:IVT、DCD、App Boot镜像到底是什么?

S32系列芯片中常说的IVT镜像、DCD镜像等跟Boot过程相关的镜像到底是什么,镜像结构长啥样?各镜像作用是什么?主分区和备份区的概念?答案统统在这里!!

车载系统攻城狮 4251

reactjs组件的生命周期

需要注意的是,React 17版本以后,一些生命周期方法被标记为废弃,推荐使用特定的替代方法。React组件的生命周期指的是组件从创建到销毁的整个过程中,React提供了一系列的生命周期方法,可以在不同的阶段执行特定的操作。然而,需要注意的是,React 16.3版本以后,一些生命周期方法已经被废弃或改变了用法,因此下面列出的是React 16.3版本之后的生命周期方法。此外,React还提供了一些钩子函数(Hooks),如useState、useEffect等,用于函数式组件中的状态管理和副作用处理。

学亮编程手记 387

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

React组件的生命周期

1. 组件生命周期概述 什么是组件的生命周期? 组件从被创建到挂载到页面中运行,再到组件不用时卸载的过程,这个过程就叫做组件的生命周期。react在组件的生命周期中提供了一系统的钩子函数,可以让开发者在函数中注入代码,这些代码会在适当的时候运行。为开发人员在不同阶段操作组件提供了时机。 注意:只有类组件才有生命周期。函数组件每次都是重新运行函数,旧的组件即刻被销毁 组件的生命周期主要包括哪几个阶段? 组件的生命周期可以被分为3个阶段:挂载阶段、更新阶段、卸载阶段 以react旧的生命

weixin_43512997的博客 5529

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

React 组件生命周期

componentDidMount(组件挂载)------ 一般在这个钩子中做一些初始化的工作,比如:开启定时器,发送网络请求,订阅消息。componentWillUnmount(组件销毁) ------ 一般在这个钩子中做一些收尾的工作,比如:关闭定时器,取消订阅消息。3. Unmounting(卸载阶段)------ 销毁一个组件,销毁前暴露出一个事件,让我们可以在组件销毁前做一些逻辑的处理。当子组件自身状态改变时,不会对父组件产生副作用的情况下,父组件不会进行更新,即不会触发父组件的生命周期。

似水流年QC的博客 2933

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

React组件生命周期小记

通过一个ScrollView组件案例,深入理解React组件的生命周期过程,包括挂载、更新和卸载三个阶段。

Recording code life 2035

reactjs生命周期ajax网络,老生常谈js-react组件生命周期

组件的生命周期可分成三个状态:•Mounting:已插入真实 DOM•Updating:正在被重新渲染•Unmounting:已移出真实 DOM生命周期的方法有:•componentWillMount 在渲染前调用,在客户端也在服务端。•componentDidMount : 在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,可以通过this.getDOMNode()来进行访问。...

weixin_36474001的博客 244

React 类组件与函数组件的生命周期

React 组件的生命周期分为类组件和函数组件两种形式。类组件的生命周期包括挂载、更新和卸载三个阶段,分别对应 constructor、render、componentDidMount、shouldComponentUpdate、componentDidUpdate 和 componentWillUnmount 等方法。函数组件通过 React Hooks 模拟生命周期,如 useEffect 用于处理挂载、更新和卸载的逻辑,useState 用于状态管理。两者在处理副作用、性能优化和状态更新上有显著差异:

修炼魔法中.... 2379

❤React 组件的新旧生命周期

❤React组件的新旧生命周期

林太白 1681

React中类组件的生命周期

生命周期阶段类组件方法函数组件 Hook挂载更新useEffect(() => {...}, [依赖])卸载如果你用的是函数组件,大部分生命周期操作都可以通过useEffect处理。

YiHanXii的博客 2048

ReactNative 第六节 实战之ReactJS 组件和生命周期

ReactNative关键是ReactJS思想在Native上的体现。 ReactJS核心思想:组件化。 每个组件维护自动的状态和UI,状态变化时,自动重新渲染。多个组件组成了ReactJS应用。组件看Sample文件 https://yunpan.cn/cSLnXwpc4u3tI (提取码:6760) 下面几个常用项: React是全局对象,顶层API与组件API React.crea

vivian的专栏 389

ReactJS组件的生命周期详解

ReactJS组件的生命周期详解这篇文章主要讲一下ReactJS组件的生命周期,ReactJS组件的生命周期可以归结为4各阶段,每个阶段可能会相继调用多个方法。 1.创建阶段 getDefaultProps 2.实例化阶段 getInitialState->componentWillMount->render->componentDidMount 3.更新阶段 compo

xiaochuanding的博客 620

ReactJS组件的生命周期

先来看看官方给出的示例图,然后我们在通过代码来实际感受一下: 为了理解ReactJS中的组件的生命周期,我们通过下面的示例代码来直观的感受一下,当我们的React组件的整个生命周期都发生了哪些事件。直接上代码和运行结果吧! css代码 .main { padding: 10px 50px; }.log { padding: 5px; border-bottom: 1px solid

不断成长的我 628

reactjs入门到实战(七)---- React的组件的生命周期

React的组件的生命周期有三个状态分别是:挂载(生产组件示例化、准备挂载到页面、挂载到页面)、更新(更新值、更新DOM)、和卸载(卸载后)。 》》》其他 getInitialState :设置state的初始值 getDefaultProps :props的默认值 propTypes:允许验证传入到组件的 props mixins:数组允许使用混合来在多个组件...

afk46847的博客 166

【React】React组件的生命周期

React组件的生命周期

南栀的博客 628

react组件的生命周期

Mon 06Mon 13已完成 进行中 计划中 现有任务Adding GANTT diagram functionality to mermaid

twinkle的博客 1345
上一篇: CSS3边框与圆角
下一篇: [React]JSX的用法
FreeeLinux
博客等级 码龄11年 421粉丝 356原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值