react18【系列实用教程】useMemo —— 缓存数据 (2024最新版)

在这里插入图片描述
为什么添加了 memo ,子组件2依然重新渲染了呢?
因为父组件向子组件2传递了引用类型的数据

  const userInfo = {name: "朝阳",};
<Child2 userInfo={userInfo} />

memo() 函数的本质是通过校验Props中数据的内存地址是否改变来决定组件是否重新渲染组件的一种技术。

每次父组件重新渲染时,引用类型的数据 userInfo 的内存地址都会重新生成,导致子组件重新渲染。

注意事项:若 userInfo 是用 useState 声明的响应式变量,则内存地址不会重新生成,所以不会引发子组件的重新渲染。

  // 不会引发添加了 memo 的子组件重新渲染const [userInfo] = useState({ name: "朝阳" });

useMemo 的使用场景

父组件向子组件传递了引用类型的数据,但仍想缓存子组件,则需使用 useMemo

useMemo 的语法

  • 第1个参数:返回目标数据的函数
  • 第2个参数:由依赖项构成的数组,和 useEffect 类似,当依赖项发生改变时,也会触发 useMemo 内第一个参数的处理函数执行,引发子组件重新渲染!
  • 返回:被缓存的目标数据
import { useMemo } from "react";
 const userInfo = useMemo(() => {return { name: "朝阳" };}, []);

完整范例代码

src/page/Index/Father.jsx

import { useState, useMemo } from "react";
import Child1 from "./Child1.jsx";
import Child2 from "./Child2.jsx";export default function Father() {console.log("渲染父组件");const userInfo = useMemo(() => {console.log("执行 useMemo");return { name: "朝阳" };}, []);const [num, setNum] = useState(0);function increase() {setNum(num + 1);}return (<div style={{ border: "1px solid", padding: "10px" }}><h1>父组件</h1><p>num的值为:{num}</p><button onClick={increase}>+1</button><Child1 /><Child2 userInfo={userInfo} /></div>);
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java学习笔记10 Java Web 应用——JSP

JSP(Java Script Pages)技术是一种网站开发技术&#xff0c;可以让Web开发人员快速、高效的开发出易于维护的动态网页。使用JSP技术开发的Web应用程序具有跨平台性&#xff0c;不需要修改程序&#xff0c;发布后即可在Windows、Linux等不同的操作系统中运行。 10.1 JSP技术概述…

搜维尔科技:【案例分享】腾讯魔方工作组采用Xsens动捕录制动作

一&#xff1a;腾讯魔方工作组采用Xsens动捕录制动作 用户名称&#xff1a;腾讯魔方工作组Next工作室 主要产品&#xff1a;Xsens MVN Link Animate Pro 腾讯Next工作室采用Xsens MVN 动作捕捉设备进行动作数据的采集和录制&#xff0c;数据用于后期游戏项目的开发&#xf…

原生IP介绍

原生IP&#xff0c;顾名思义&#xff0c;即初始真实IP地址&#xff0c;是指从互联网服务提供商获得的IP地址&#xff0c;IP地址在互联网与用户之间直接建立联系&#xff0c;不需要经过代理服务器代理转发。 原生IP具备以下特点。 1.直接性 原生IP可以直接连接互联网&#xff…

Java集合之HashMap

概述 HashMap是基于哈希表的Map接口实现的一种存储key、value的数据结构&#xff0c;提供了所有可选的映射操作&#xff0c;且键值允许null的存在&#xff0c;不保证数据映射的顺序&#xff0c;也不能保证顺序在一段时间内保持不变 底层结构 jdk1.7&#xff1a;数组链表 jdk…

Acrel-1000变电站综合自动化监控系统 实时测控保护、远动于一体

​一、 系统概述 1.1 概述 Acrel-1000 变电站综合自动化监控系统&#xff0c;是我司根据电力系统自动化及无人值守的要求&#xff0c;总结国内外的研究和生产的先进经验&#xff0c;专门研制出的新一代电力监控系统。本系统具有保护、遥测、遥信、遥脉、遥调、遥控功能&#x…

新时代高速数据中心800G DR8光模块解决方案

近年来&#xff0c;随着5G网络、存储介质和计算能力等基础技术的不断升级&#xff0c;100G和400G数据中心得到了普及。如今800G数据中心时代也已经来临。本文将围绕800G DR8来介绍飞速&#xff08;FS&#xff09;800G数据中心解决方案&#xff0c;旨在为全球客户提供全面且高性…

做海外问卷调查有什么方法技巧?

大家好&#xff0c;我是橙河老师&#xff0c;很久没更新文章了&#xff0c;一方面是比较忙&#xff0c;另一方面是觉得关于项目介绍的文章&#xff0c;写的也差不多了。 后面的文章&#xff0c;还是着重讲解不同渠道的特点、做题技巧、人设创建这些实战性的内容。 我不像其他公…

【二叉树】(三)二叉树的基础修改构造及属性求解2

&#xff08;二&#xff09;二叉树的基础修改构造及属性求解2 二叉树的所有路径思路递归法迭代法 左叶子之和递归法迭代法 找树左下角的值递归法迭代法 路径总和从中序与后序遍历序列构造二叉树最大二叉树合并二叉树 二叉树的所有路径 力扣原题链接&#xff1a;257. 二叉树的所…

寄大件家具用什么物流便宜,寄沙发大件物流便宜

在现代生活中&#xff0c;搬家或重新布置家居时&#xff0c;沙发作为体积较大、价值较高的家具&#xff0c;选择一个经济实惠的物流服务至关重要。 1、对于近距离的运输&#xff0c;同城寄沙发可以找个车直接拉过去比较划算&#xff0c;省外的可以试试像我这样邮寄&#xff1b;…

9个优质免费视频素材网站推荐丨2024年最新资源合集

在短视频火爆的时代&#xff0c;高清、无水印、可商用的视频素材变得尤为重要。下面是我精心整理的9个常用免费视频素材网站&#xff0c;适合各类视频创作者。希望你能找到满意的素材&#xff01; 一、视频素材 1. 蛙学府 优点&#xff1a;丰富的正版商用素材&#xff0c;涵盖…

留学资讯 | 2024英国学生签证申请需要满足哪些条件?

英国移民局于2020年9月10日发布了《移民规则变更声明: HC 707》&#xff0c;对学生签证制度进行了全面改革。该法案于2020年10月5日正式生效。根据此法案&#xff0c;新的学生签证——The Student and Child Student Routes学生和儿童学生路线&#xff0c;将替代原先的Tier 4学…

[论文阅读]FINE-TUNE THE PRETRAINED ATST MODEL FOR SOUND EVENT DETECTION

摘要 本研究提出了一种微调预训练模型ATST&#xff08;音频师生转换模型&#xff09;的方法&#xff0c;用于声音事件检测&#xff08;SED&#xff09;。通过引入ATST-Frame模型&#xff0c;该方法在DCASE挑战任务4数据集上取得了新的SOTA结果&#xff0c;有效解决了预训练模型…