React的useEffect

news2024/11/25 2:41:22

概念:useEffect是一个React Hook函数,组件渲染之后执行的函数
在这里插入图片描述
在这里插入图片描述

  1. 参数1是一个函数,可以把它叫做副作用函数,在函数内部可以放置要执行的操作
  2. 参数2是一个数组(可选参),在数组里放置依赖项,不同依赖项会影响第一个参数函数的执行,当是一个空数组的时候,副作用函数只会在组件渲染完毕之后执行一次

    useEffect依赖说明

useEffect副作用函数的执行时机存在多种情况,根据传入依赖项的不同,会有不同的执行表现
依赖项就是你要控制的变量等,组件更新:包括值更新

依赖项副作用功函数的执行时机
没有依赖项组件初始渲染 + 组件更新时执行
空数组依赖只在初始渲染时执行一次
添加特定依赖项组件初始渲染 + 依赖项变化时执行

清除副作用

概念:在useEffect中编写的由渲染本身引起的对接组件外部的操作,社区也经常把它叫做副作用操作,比如在useEffect中开启了一个定时器,我们想在组件卸载时把这个定时器再清理掉,这个过程就是清理副作用
在这里插入图片描述

自定义Hook实现

概念:自定义Hook是以 use打头的函数,通过自定义Hook函数可以用来实现逻辑的封装和复用

在这里插入图片描述

// 封装自定义Hook

// 问题: 布尔切换的逻辑 当前组件耦合在一起的 不方便复用

// 解决思路: 自定义hook

import { useState } from "react"

function useToggle () {
  // 可复用的逻辑代码
  const [value, setValue] = useState(true)

  const toggle = () => setValue(!value)

  // 哪些状态和回调函数需要在其他组件中使用 return
  return {
    value,
    toggle
  }
}

// 封装自定义hook通用思路

// 1. 声明一个以use打头的函数
// 2. 在函数体内封装可复用的逻辑(只要是可复用的逻辑)
// 3. 把组件中用到的状态或者回调return出去(以对象或者数组)
// 4. 在哪个组件中要用到这个逻辑,就执行这个函数,解构出来状态和回调进行使用


function App () {
  const { value, toggle } = useToggle()
  return (
    <div>
      {value && <div>this is div</div>}
      <button onClick={toggle}>toggle</button>
    </div>
  )
}

export default App

React Hooks使用规则

  1. 只能在组件中或者其他自定义Hook函数中调用
  2. 只能在组件的顶层调用,不能嵌套在if、for、其它的函数中
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

旧物焕新生:探索旧物回收小程序的开发与应用

随着社会的快速发展&#xff0c;我们的生活节奏日益加快&#xff0c;物质需求也在不断膨胀。然而&#xff0c;随之而来的却是资源的浪费和环境的压力。在这样的背景下&#xff0c;旧物回收小程序应运而生&#xff0c;为我们提供了一个绿色、环保、便捷的生活新选择。 旧物回收…

Android Kernel源码下载方法

Android Kernel的源码是git管理的&#xff0c;和之前下载的Android源码管理方式不一样&#xff0c;所以下载方式也不一样&#xff0c;直接用git下载就可以了&#xff1b;去网上搜的下载方式五花八门&#xff0c;有很多问题&#xff0c;因为服务器经常无法访问&#xff0c;也一直…

C++笔记:类和对象(二)->继承

上篇内容&#xff1a;C中的重载 继承 继承是什么 在类和对象(一)->封装中说了&#xff0c;封装是将对应的属性和行为封装到一个类中。 那什么是继承呢&#xff1f; 比如一个学校有老师和同学还有领导&#xff0c;那么我们最开始的想法就是每个职位都去封装一个类&#xff0c…

免费通配符证书的申请指南——从申请到启动https

如果您的网站拥有众多二级子域名&#xff0c;那么通配符证书证书是最好的选择。 免费通配符申请流程如下&#xff1a; 1 创建证书服务商账号 首先选择一个提供免费通配符的服务商&#xff0c;打开国产服务商JoySSL官网&#xff0c;创建一个账号&#xff08;注册账号时填写注册…

共享办公室——一种成熟的工作空间解决方案

在固定的框架外寻求灵活性与创新&#xff0c;共享办公室租赁提供了一个动态且富有成本效益的工作环境&#xff0c;适应了快节奏和变化多端的商务需求。 随着创业文化的蓬勃发展和远程工作模式的流行&#xff0c;共享办公室以其独特的优势迅速成为市场上的新秀。它推动了工作…

深入理解 ANR WatchDog 库

ANR WatchDog 是一个用于检测 Android 应用程序中的 ANR (应用程序无响应) 的开源库。本文将深入探讨这个库的工作原理、如何集成到你的应用中&#xff0c;以及它如何帮助你避免用户体验不佳的情况。 ANR WatchDog 库的工作原理 ANR WatchDog 通过一个简单的机制来检测ANR&am…

如何学习网络安全?网络安全零基础入门,看这一篇就够了!

一、概述&#xff1a; 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。这涉及到保护企业数据、国家基础设施、知识产权以及维护网络…

伪装目标检测论文阅读 SAM大模型之参数微调:Conv LoRA

paper&#xff1a;link code&#xff1a;还没公开 摘要 任意分割模型(SAM)是图像分割的基本框架。虽然它在典型场景中表现出显著的零镜头泛化&#xff0c;但当应用于医学图像和遥感等专门领域时&#xff0c;其优势就会减弱。针对这一局限性&#xff0c;本文提出了一种简单有效…

Linux_Ubuntu18.04安装过程

目录 1. 虚拟机安装2. 虚拟机创建3. Ubuntu x64安装4. 开启重启问题 1. 虚拟机安装 版本&#xff1a;VMware-workstation-full-16.0.exe 下一步 接受 下一步 下一步&#xff0c;注意安装位置。 下一步 下一步 点击安装 等待安装完成。 2. 虚拟机创建 创建新的虚拟机 典型 稍后…

【Java那些事】关于前端收到后端返回的时间格式“2024-04-28T14:48:41“非想要的格式

问题&#xff1a; 后端操作后返回时间格式是"2024-04-28T14:48:41" 而我们想要的是&#xff1a;"2024-04-28 14:48:41", 两个解决方法&#xff1a; 方法一&#xff1a;使用 JsonFormat注解 Data AllArgsConstructor NoArgsConstructor public class Use…

前端高并发的出现场景及解决方法——技能提升——p-limit的使用

最近在写后台管理系统的时候&#xff0c;遇到一个场景&#xff0c;就是打印的页面需要根据传入的多个id&#xff0c;分别去请求详情接口。 比如id有10个&#xff0c;则需要调用10次详情接口获取到数据&#xff0c;最后对所有的数据进行整合后页面渲染。 相信大家或多或少都遇到…

MyBatis 插件介绍及应用

MyBatis 插件介绍及应用 MyBatis 是一个持久层框架&#xff0c;它允许开发者自定义 SQL 语句并将其映射到 Java 对象中。MyBatis 提供了一种灵活的数据库操作方式&#xff0c;但随着项目的复杂度增加&#xff0c;一些通用功能如分页、缓存、事务管理等可能需要重复编写。为了解…

仅1年!!影响因子10+飙升至30+,Springer旗下的潜力优刊,未来可期!

【SciencePub学术】今天小编给大家带来了一本医学类的高分优刊解读&#xff0c;隶属于Springer出版社&#xff0c;JCR1区&#xff0c;中科院1区TOP&#xff0c;创刊时间不长&#xff0c;但影响因子仅1年时间从10直接飙升至30&#xff0c;领域相符的学者可考虑&#xff01; Sign…

PaddlePaddle与OpenMMLab

产品全景_飞桨产品-飞桨PaddlePaddle OpenMMLab算法应用平台

基于LEAP模型的碳排放建模及行业、区域、国家等层面实践应用

线上方式&#xff1a;腾讯会议&#xff1b; 本期共计8次直播课&#xff0c;每节3小时。 5月24日-5月26日 每天&#xff08;8&#xff1a;30-11&#xff1a;30&#xff09;腾讯会议直播 5月31日-6月02日 每天&#xff08;8&#xff1a;30-11&#xff1a;30&#xff09;腾讯会…

Android 多媒体处理中ByteBuffer使用注意事项

Android多媒体处理中ByteBuffer使用注意事项 ByteBuffer 是 Java 中用来操作原始字节数据的类&#xff0c;它提供了一种灵活的方式来读取、写入和操作字节数据。以下是关于 ByteBuffer 的详细说明&#xff1a; 创建 ByteBuffer 你可以通过几种方式来创建 ByteBuffer&#xf…

新接口上线啦,近期我们增加了九个接口

天行数据近期新增了独立计次类接口&#xff1a;食物营养识别、数字识别、条形码识别和会员免费类接口&#xff1a;全国常用电话、健康小妙招、多音字查询、国际时区查询、英语格言等。 1、食物营养识别 通过输入图像资源&#xff0c;识别近两千种常见食物的详细营养成分及100…

转换图片为jpg格式?几个一键转换格式的方法

现在图片格式越来越多&#xff0c;我们经常需要对一些不符合要求的图片进行图片格式转换&#xff0c;否则就会出现打不开或者无法编辑处理的情况&#xff0c;那么对于一些不太懂电脑的小伙伴来说图片转格式会比较复杂&#xff0c;今天小编就来教大家几个简单的改变图片格式的方…

mars3d开发过程中点击面图层飞行定位,设置俯仰角度后,layer.flyTo({没有生效的排查思路

mars3d开发过程中点击面图层飞行定位&#xff0c;设置俯仰角度后&#xff0c;layer.flyTo({没有生效的排查思路记录&#xff0c;给大家提供一下以后排查定位问题的方向 问题场景相关代码&#xff1a; 1.项目本身代码&#xff1a; 2.精简了关键性代码后&#xff0c;就可以去ge…

【测试100问】面试:说说你印象最深的BUG,举个例子

一、场景 面试时被问&#xff0c;你印象中最深刻的 BUG是什么&#xff1f; 举个例子说明一下。 该如何回答比较好呢&#xff1f; 二、面试考察点 面试官问这道题&#xff0c;除了考察你发现问题的能力&#xff0c;还有你的表达能力、深度思考能力、归纳总结能力。 千万不要…