首页 > 其他分享 >react生命周期

react生命周期

时间:2024-02-23 18:01:52浏览次数:18  
标签:React 生命周期 Hooks react 调用 props 组件

1.类组件生命周期

以下是 React 类组件的全部生命周期方法,按照调用顺序排列:

constructor(props)

用途:组件的构造函数,在组件实例化时调用,用于初始化状态和绑定方法。
static getDerivedStateFromProps(props, state)

用途:在组件实例化、接收新的属性(props)或调用 setState 方法之前调用,用于根据新的属性值更新状态。
示例:
static getDerivedStateFromProps(props, state) {
  if (props.initialCount !== state.count) {
    return {
      count: props.initialCount
    };
  }
  return null;
}
render()

用途:必需的生命周期方法,用于渲染组件的 JSX 内容。
componentDidMount()

用途:在组件挂载到 DOM 后调用,用于执行初始化操作、数据获取或订阅事件等。
shouldComponentUpdate(nextProps, nextState)

用途:在组件更新前调用,用于决定是否重新渲染组件。
示例:
shouldComponentUpdate(nextProps, nextState) {
  return this.props.value !== nextProps.value;
}
getSnapshotBeforeUpdate(prevProps, prevState)

用途:在组件更新前调用,返回一个快照值(snapshot),可以在 componentDidUpdate 中使用。
示例:
getSnapshotBeforeUpdate(prevProps, prevState) {
  if (prevProps.list.length < this.props.list.length) {
    return this.listRef.scrollHeight;
  }
  return null;
}
componentDidUpdate(prevProps, prevState, snapshot)

用途:在组件更新后调用,可以执行与前一次渲染相关的操作。
componentWillUnmount()

用途:在组件从 DOM 中卸载前调用,用于清理操作、取消订阅或清除计时器等。
componentDidCatch(error, info)

用途:在组件内部发生错误时调用,用于捕获和处理错误。
以上是 React 类组件的全部生命周期方法。需要注意的是,自 React 16.3 版本起,React 推荐使用 React Hooks 来管理组件的状态和副作用,而不是依赖于类组件的生命周期方法。

 

 

React Hooks 是 React v16.8 引入的一项重要特性,它允许您在不编写 class 的情况下使用 state 和其他 React 特性。通过使用 Hooks,您可以在函数组件中使用 state、生命周期方法、副作用等特性,从而更方便地管理组件的逻辑。

在使用 React Hooks 之前,状态管理和生命周期方法只能在类组件中使用。而使用函数组件时,您无法直接使用这些特性,这导致了在一些场景下编写额外的代码或使用高阶组件来实现相同的功能。

React Hooks 提供了一些内置的钩子函数,最常用的包括以下几种:

  1. useState:用于在函数组件中添加局部状态。
  2. useEffect:用于在函数组件中执行副作用操作,例如数据获取、订阅更新等。
  3. useContext:用于在函数组件中使用 React 的上下文。
  4. useRef:用于在函数组件中创建可变的 ref 对象。
  5. useMemo 和 useCallback:用于在函数组件中进行性能优化。

使用 Hooks 的优势在于它们让您能够更清晰地组织组件的逻辑,避免了 class 组件中的一些问题,例如 this 指针的困扰和代码复用的不便。此外,Hooks 也使得组件之间的状态逻辑可以更容易地共享和复用。

总的来说,React Hooks 是 React 中一种更现代、更灵活的组件编写方式,它使得函数组件能够拥有类组件的功能,同时保持了函数式编程的优势。

标签:React,生命周期,Hooks,react,调用,props,组件
From: https://www.cnblogs.com/ygyy/p/18030102

相关文章

  • react类组件和函数组件的区别
    1.类组件importTarofrom'@tarojs/taro';import{Component,useState}from'react'classClasstestextendsComponent{constructor(props){super(props);this.state={count:0};}//组件挂载到DOM后立即调用,也就是在组件的......
  • VMware Aria Suite Lifecycle 8.16 - 应用生命周期管理
    VMwareAriaSuiteLifecycle8.16-应用生命周期管理请访问原文链接:https://sysin.org/blog/vmware-aria-suite-lifecycle/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org应用生命周期管理VMwareAriaSuiteLifecycle(以前称为vRealizeSuiteLifecycleManage......
  • Reactive UI 包的使用 [观察者模式]
     1ReactiveUI原版说明包---------  |一个高级的、可组合的、反应式的模型-视图-视图模型框架(reactiveui.net)   2ReactiveUI具体分析拆解的笔记--------- ReactiveUI使用笔记,教程总结–CodeQing3ReactiveX对于具体的关键字分析 ----------ReactiveX-随笔分......
  • React18 之 Suspense
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:佳岚SuspenseSuspense组件我们并不陌生,中文名可以理解为暂停or悬停 ,在React16中我们通常在路由懒加载中配合Lazy组件一起使用......
  • 【libGDX】ApplicationAdapter生命周期
    1前言​libGDX中,用户自定义的渲染窗口需要继承ApplicationAdapter类,ApplicationAdapter实现了ApplicationListener接口,但实现的方法都是空方法,方法释义如下。publicinterfaceApplicationListener{ //应用首次创建时调用一次 publicvoidcreate(); //窗口尺......
  • React
    React和Vue对比React将一切视为函数。组件作为一个函数,返回JSX进行构建。React高度自定义化,特别灵活。Vue相对将内容固定,不需要太多的自定义,开箱即用的感觉。可以将React比喻成手动档,Vue比喻成自动档。Vue与React相比,Vue2的选项式确实会让框架变得死板,但是Vue3组合式增强了函......
  • React基础-上
    React目录ReactJSX概念本质JSX场景—JS表达式JSX场景—列表渲染JSX场景—条件渲染JSX场景—复杂条件渲染React事件绑定基础实现使用事件参数(event)传递自定义参数同时传递事件对象和自定义参数React组件概念组件基础使用组件状态管理—useState基础使用状态的修......
  • [转]多端统一框架Taro基础教程(支持转小程序/React Native(安卓/iOS)/鸿蒙)
    原文地址:多端统一框架Taro基础教程-知乎随着微信小程序越来越火,其它平台也都推出了自己的小程序产品(支付宝、快应用、百度、抖音)。小程序最大的特点就是平台能为你提供强大的流量,所以小程序开发变成了前端必会知识。作为一个从来不想写程序,一心只想泡妹子的程序员,我一直期盼......
  • 记录--源码视角,Vue3为什么推荐使用ref而不是reactive
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助ref 和 reactive 是Vue3中实现响应式数据的核心API。ref 用于包装基本数据类型,而reactive用于处理对象和数组。尽管 reactive 似乎更适合处理对象,但 Vue3官方文档更推荐使用 ref。 我的想法,ref就......
  • .Net Core框架容器依赖注入的生命周期
    一.前言框架中依赖注入容器包括了三种生命周期,Singleton、Scoped和Transient。Singleton是全局实例,它存储到根容器上,从任何容器解析都会得到全局唯一的实例。Transient是瞬时实例,它不会存储到容器上,从任何容器解析都会重新实例化一个新的对象。Scoped是域内实......