iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >浅谈React Component生命周期函数
  • 815
分享到

浅谈React Component生命周期函数

2024-04-02 19:04:59 815人浏览 独家记忆
摘要

React组件有哪些生命周期函数?类组件才有的生命周期函数,包括es6语法的class以及create-react-class模块: 分为几个阶段:挂载,更新,卸载,错误处理; 1,

React组件有哪些生命周期函数?类组件才有的生命周期函数,包括es6语法的class以及create-react-class模块:

分为几个阶段:挂载,更新,卸载,错误处理

1,挂载:constructor(常用)、static getDerivedStateFromProps、render(常用)、componentDidMount(常用)

constructor是类组件的构造函数,在这可以初始化组件的state或进行方法绑定如:constructor(props){ super(props);this.state={test: 'test'};this.someFn = this.someFn.bind(this);},否则可以不用显式实现constructor方法;

static getDerivedStateFromProps:在render之前被调用,它可以通过返回一个值改变state如:


static getDerivedStateFromProps(nextProps, prevState){
 
    if(props.test !== state.test){
        return {state: props.state}; //返回的这部分称为partialState
//这会称为新的state的一部分,nextState将会是_assign({}, prevState, partialState);
    }
 
    return null; 
//返回的是null 或undefined,则nextState将是prevState,及不会改变组件的state;

它的目的只有一个,就是让组件在props变化更新state,也是state的值依赖于props;不管出于什么原因,或组件内的shouldComponentUpdate返回false,它都在渲染前被执行;

与static getDerivedStateFromProps相似的生命周期是componentWillReceiveProps(nextProps),在componentWillReceiveProps调用this.setState({...});改变state;在使用static getDerivedStateFromProps以及componentWillReceiveProps时要谨慎、需要考虑性能、避免bug的出现,有需要可以考虑React.PureComponent或React.memo或完全可控组件或使用key非可控组件来代替上面的getDerivedStateFromProps以及componentWillReceiveProps

另外有个UNSAFE_componentWillReceiveProps是在父组件重新渲染时触发;

render就是渲染函数,返回React元素,它是class组件必须实现的方法;是个纯函数,只管返回React元素,且不会直接与界面交互,交互一般放在ComponentDidMount或ComponentDidUpdate等周期中;render方法的返回值类型可以:


//可以是React元素如'<div/>'或'<MyComponent/>' 
//或用React.createElement(type, ?props, ?children)创建的元素、
//可以是数组(该数组类似于this.props.children的形式['Test', ['nest test'], ...others])
//或Fragments、
//可以是字符串或数值类型(被当作字符串)、
//可以是布尔类型或null(当是布尔或null时,什么都不渲染);
class Test extends React.Component{
    render(){
        //return 'Hello Test';
        //return true;
        //return ['Hello', ' Test'];
        //return <div>Test</div>
        //return <MyComponent>Test</MyComponent>
        return null;
    }
}

componentDidMount是组件挂载到React组件树之后调用;在这里可以获取异步数据或者依赖DOM节点的初始化,也比较适合在这个时候添加订阅(记得在componentWillUnmount时取消订阅);在此调用setState会触发额外的渲染,但它发生在浏览器更新屏幕之前,所以即使调用了两次的render,用户也看不到中间状态;

2,更新:static getDerivedStateFromProps、shouldComponentUpdate、render(常用)、getSnapshotBeforeUpdate、componentDidUpdate(常用)

shouldComponentUpdate:在继承ReactComponent的组件可用,继承React.PureComponent的组件不可用;返回true表示更新组件,否则相反,也就是当shouldComponentUpdate返回false时,render方法不会被调用,componentDidUpdate也不会被调用;shouldComponentUpdate(nextProps, nextState){}可以手动对比this.props与nextProps、this.state与nextState;但是如果返回的是false,不会阻止子组件在state更新时的重新渲染,即使子组件更新了也拿不到新的props,因为父组件没有更新;

getSnapshotBeforeUpdate:在最后一次渲染输出(提交到DOM节点)之前调用,可以在元素提交到DOM之前收集当前的DOM信息(例如当前DOM的滚动位置),之后返回待传给componentDidUpdate周期方法(该方法是元素提交到DOM之后调用的,所以此时获取的DOM信息是更新后的);

componentDidUpdate:componentDidUpdate(prevProps, prevState, snapshot){};组件更新后被调用,可以在此处操作DOM,比较前后props或state异步请求数据等;第三个参数是组件的生命周期getSnapshotBeforeUpdate的返回值,若没有定义getSnapshotBeforeUpdate,则componentDidUpdate的第三个参数则为undefined;

3,卸载:componentWillUnmount(常用)

componentWillUnmount:该周期方法会在组件卸载及销毁之前调用;可以在此处清楚timer、取消网络请求、取消订阅等,释放内存;

4,static getDerivedStateFromError、componentDidCatch;

static getDerivedStateFromError:

componentDidCatch:

参考文档

React Component

到此这篇关于浅谈React Component生命周期函数的文章就介绍到这了,更多相关React Component生命周期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈React Component生命周期函数

本文链接: https://www.lsjlt.com/news/129314.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈React Component生命周期函数
    React组件有哪些生命周期函数?类组件才有的生命周期函数,包括ES6语法的class以及create-react-class模块: 分为几个阶段:挂载,更新,卸载,错误处理; 1,...
    99+
    2022-11-12
  • 浅谈vue的生命周期
    目录1.什么是生命周期有什么作用2.第一次加载页面会触发哪几个钩子3.简述每个周期应用于哪个场景4.created和mounted的区别5.vue在哪个生命周期获取数据总结1.什么是...
    99+
    2022-11-12
  • 浅谈VUE uni-app 生命周期
    目录一、应用的生命周期二、页面生命周期三、组件生命周期总结一、应用的生命周期 onLaunch 当uni-app 初始化完成时触发(全局只触发一次)onShow 当 uni-ap...
    99+
    2022-11-12
  • react的生命周期函数有哪些
    本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。react的生命周期函数有哪些?react的生命周期函数(超详细)话不多说,直接进入正题!先来了解一下react的生命周期函数有哪些:组件将要挂载时触发的...
    99+
    2023-05-14
    React
  • react的生命周期函数怎么使用
    这篇文章主要介绍“react的生命周期函数怎么使用”,在日常操作中,相信很多人在react的生命周期函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react的生命周期函数怎么使用”的疑惑有所帮助!...
    99+
    2023-07-04
  • 微信小程序中的生命周期与生命周期函数浅析介绍
    目录一、生命周期概念分类二、生命周期函数概念作用分类三、总结一、生命周期 概念 生命周期(Life Cycle)是指一个对象从创建-->运行-->销毁的整个阶段 小程序的...
    99+
    2022-11-13
    微信小程序生命周期 微信小程序生命周期函数
  • 浅谈Maven的build生命周期和常用plugin
    目录简介lifecycle和PhasesPhases和Goals常用plugin介绍maven-dependency-pluginmaven-jar-plugin简介 Maven为我...
    99+
    2022-11-12
  • 浅谈一下Vue技术栈之生命周期
    目录1、什么是生命周期2、分析生命周期2.1 生命周期钩子函数2.2 生命周期钩子函数的作用2.3 生命周期钩子函数图例2.4 生命周期钩子函数的应用3、生命周期总结1、什么是生命周...
    99+
    2023-05-18
    Vue 技术栈 Vue 生命周期
  • 深入浅析Vue3中的生命周期函数
    我们上面提及到一个组合式API中的钩子函数都是可以被多次定义,那意义是什么呢?其实很多时候我们是有这种需求的,我们前面的文章中提及到过 我们的Vue3的组合式API就是具有更高的可维护性,每个逻辑都是单独的代码块,那如果我们在页面初始化完成...
    99+
    2023-05-14
    生命周期函数 vue3
  • React生命周期函数深入全面介绍
    目录1. 注意2. 图解3. 生命周期函数3.1 constructor构造函数3.2 static getDerivedStateFromProps(nextProps,...
    99+
    2022-11-13
  • 浅谈Unity脚本生命周期与执行顺序
    目录一、脚本生命周期二、MonoBehavior生命周期图三、脚本执行顺序四、自定义执行顺序一、脚本生命周期 Unity脚本中的常见必然事件如下表所示 ...
    99+
    2022-11-12
  • React 组件的常用生命周期函数汇总
    目录1. 概述2. 生命周期的三个阶段2.1. 创建时(挂载阶段)2.2. 更新时(更新阶段)2.3. 卸载时(卸载阶段)1. 概述 意义:组件的生命周期有助于理解组件的运行方式、完成更复杂的组件功能、分析组件错误原因等...
    99+
    2022-08-15
    React 组件常用生命周期函数 React 组件
  • React Hooks--useEffect代替常用生命周期函数方式
    目录useEffect代替常用生命周期函数原始生命周期函数对React Hooks(useState和useEffect) 的总结思考一、为什么用React Hooks(面向生命周期...
    99+
    2022-11-13
  • 浅谈一下Vue生命周期中mounted和created的区别
    目录一、什么是生命周期?二、created和mounted区别?三、例子一、什么是生命周期? 用通俗的语言来说,就是Vue中实例或者组件从创建到消灭中间经过的一系列过程。虽然不太严谨...
    99+
    2023-05-19
    Vue 生命周期 Vue mounted Vue created
  • 浅谈Android App开发中Fragment的创建与生命周期
    Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用...
    99+
    2022-06-06
    fragment app Android
  • react生命周期(类组件/函数组件)操作代码
    1.react代码模式分为两种 类组件和函数组件(生命周期也有所不同) 2.类组件(写法如下) import React from 'react' export default cl...
    99+
    2023-01-06
    react生命周期 react类组件 react函数组件
  • Vue之生命周期函数详解
    目录生命周期函数常用的生命周期的钩子 关于Vue销毁实例: 总结 生命周期函数 生命周期函数又叫:生命周期回调函数,生命周期函数、 生命周期钩子 是什么:Vue在关键时刻帮我们调用...
    99+
    2022-11-12
  • Vue生命周期函数有哪些
    小编给大家分享一下Vue生命周期函数有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.BeforeCreate()Vue实例已经创建,但是data,和methods中的数据和方法都未被初始化。就是说你可以在befor...
    99+
    2023-06-22
  • react新版本生命周期钩子函数及用法详解
    和旧的生命周期相比 准备废弃三个钩子,已经新增了两个钩子 React16 之后有三个生命周期被废弃(但并没有删除) componentWillMount( 组件将要挂...
    99+
    2022-11-12
  • react生命周期的类组件和函数组件怎么写
    这篇文章主要介绍“react生命周期的类组件和函数组件怎么写”,在日常操作中,相信很多人在react生命周期的类组件和函数组件怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react生命周期的类组件和函...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作