react组件渲染性能优化之函数组件-useMemo使用

useMemo的主要作用就是缓存值的,某些时候,组件中某些值需要根据状态进行一个二次计算(类似于 Vue 中的计算属性),由于函数组件一旦重新渲染,就会重新执行整个函数,这就导致之前的二次计算也会重新执行一次

import { useMemo, useState } from 'react'export default function UseMemoOptimize() {// 维护两个状态const [counter, setCounter] = useState(1);const [val, setVal] = useState("");/*** 每次改变其它值的时候,都会重新调用该函数*/function getCount() {console.log("getCount函数调用了")return counter + 100;}return (<div><h1>总数:{getCount()}</h1><button onClick={() => setCounter(counter + 1)}>+1</button><input value={val} type="text" onChange={e=>setVal(e.target.value)} /></div>);
}

useMemo 计算结果是 return 回来的值, 主要用于缓存计算结果的值。应用场景如:需要进行二次计算的状态

import { useMemo, useState } from 'react'
export default function UseMemoOptimize() {// 维护两个状态const [counter, setCounter] = useState(1);const [val, setVal] = useState("");/*** 在之前的状态的基础上做一个二次计算* @returns 返回一个缓存值*/const countNum = useMemo(function getCount() {console.log("getCount函数调用了")return counter + 100;},[counter])return (<div><h1>总数:{ countNum }</h1><button onClick={() => setCounter(counter + 1)}>+1</button><input value={val} type="text" onChange={e=>setVal(e.target.value)} /></div>);
}

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

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

相关文章

CSS的基础语法和常见的语法简单归纳

CSS CSS 是层叠样式表&#xff08;Cascading Style Sheets&#xff09;的缩写。它是一种用来控制网页样式和布局的标记语言。通过 CSS&#xff0c;可以定义网页中的元素&#xff08;如文字、图像、链接等&#xff09;的外观和排版方式&#xff0c;包括字体、颜色、大小、间距、…

通义千问接口

接口文档 请求 import random from http import HTTPStatus from dashscope import Generation # 建议dashscope SDK 的版本 > 1.14.0def call_with_messages():messages [{role: system, content: You are a helpful assistant.},{role: user, content: 如何做西红柿炒…

产品推荐 | 基于 AMD Alveo V80 数据中心的FPGA加速器卡

1、产品概述 Alveo V80 卡采用强大的 AMD Versal™ XCV80 HBM 系列自适应 SoC&#xff0c;将高带宽存储器 (HBM2e) 和 800 Gb/s 高速网络封装到全高、 长外形尺寸的双插槽卡中&#xff0c;专为在本地服务器或云中部署而设计。 V80 加速器经过优化&#xff0c;可通过 AMD Vers…

Milvus基本介绍与相关概念

一、介绍 Milvus是一种开源的特征向量相似度搜索引擎,主要用于处理大规模的向量数据。它是由ZILLIZ团队推出的一款高效、可扩展的相似度搜索引擎。 Milvus的基本概念包括: 向量:Milvus主要用于处理向量数据,向量是由一组数值组成的数据结构,可以表示特征或者数据实例。距…

运维别卷系列 - 云原生监控平台 之 06.prometheus pushgateway 实践

文章目录 [toc]Pushgateway 简介Pushgateway 部署创建 svc创建 deployment Pushgateway 测试删除 Pushgateway 上对应 lable 的数据 Pushgateway 简介 WHEN TO USE THE PUSHGATEWAY Pushgateway 是一种中介服务&#xff0c;允许您从无法抓取的作业中推送指标。 The Pushgateway…

智慧园区数字化平台总体规划与建设方案(49页PPT,软件全套建设方案)

01智慧园区数字化平台总体规划 02智慧园区工业云平台建设方案 03园区智慧办公平台建设方案 04园区智能工厂建设解决方案 05园区智慧能源管理解决方案 06园区智慧政务管理解决方案 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&am…

基于Django实现的校园疫情监控平台

基于Django实现的校园疫情监控平台 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 登录注册功能 用户在没有登录自己的用户名之前只能浏览本网站的首页&#xff0c;想要使用其他功能都会…

web系统日常运维命令和工具

一、前言 web系统日常运维命令和工具 二查看服务器资源使用情况 1、内存使用情况 free -h 2、cpu 使用情况 3、磁盘使用情况 df -h /home 4、查看文件日志 查看文件尾部持续输出 tail -n 1000 -f xxx.log 查找文件匹配内容 cat xxx.log | grep XXXXX 查看zip文件内…

视觉识别应用的场景有哪些

1.视觉识别应用的场景有哪些 视觉识别应用的场景非常广泛&#xff0c;以下是一些常见的应用场景&#xff1a; 品牌与营销&#xff1a;视觉识别在品牌建设中起着至关重要的作用。它能帮助企业在市场上建立独特的品牌形象&#xff0c;并通过各种印刷品&#xff08;如名片、信纸…

Java数据类型:基本数据类型

Java是一种强类型语言&#xff0c;定义变量时&#xff0c;必须指定数据类型。 // 变量必须指定数据类型 private String username;初学者不免有个疑问&#xff1a;在实际编写代码的过程中&#xff0c;该如何选择数据类型呢&#xff1f; 回答这个问题之前&#xff0c;先来解决…

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b&#xff0c;就是线性最小二乘&#xff1b;若f(x) ax2 b / ax2 bx 之类的&#xff0c;就是非线性最小二乘&#xff1b; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…

[数据结构]红黑树的原理及其实现

文章目录 红黑树的特性红黑树的时间复杂度推导&#xff1a;结论红黑树与AVL树比较 红黑树的插入红黑树的节点定义调整策略思考情况2&#xff1a;思考情况3&#xff1a; 代码实现myBTRee.htest.cpp 红黑树的特性 红黑树最常用的平衡二叉搜索树。跟AVL树不同的是&#xff0c;红黑…

阻抗控制理解之逆动态控制律

具有六个自由度的二阶机械系统&#xff0c;其特征是给定的质量、阻尼和刚度&#xff0c;称为机械阻抗。 用于运动控制的加速度解决方法&#xff0c;它旨在通过逆动力学控制律在加速度水平上解耦和线性化非线性机器人动力学。在与环境存在交互作用的情况下&#xff0c;控制律 考…

代码托管(二)git(4)冲突解决

一、pull更新代码冲突 二、cherry-pick冲突 1、冲突演示 本地check out到当前分支&#xff0c;双击目标分支&#xff0c;选择需要cherry-pick的commit&#xff0c;右键选择cherry-pick。 &#xff08;1&#xff09;如果没有冲突&#xff0c;会自动add--》并自动commit&#…

Sam Blackshear谈Move语言的创新

Sui上的Move编程语言融合了三项基本创新&#xff1a;面向对象的数据模型、可编程交易区块和动态字段。Mysten Labs的联合创始人兼首席技术官Sam Blackshear在五年前创建了Move&#xff0c;这是一种专门为在区块链上编写智能合约而设计的语言。这三项在Sui上的创新提升了Move的潜…

【nfs服务部署服务端和客户端搭建】

原理 NFS&#xff08;Network File System&#xff09;是文件服务器之一。它的功能是可以通过网络&#xff0c;让不同的机器、不同的操作系统可以彼此共享数据文件。 NFS服务器可以让服务端的共享目录挂载到本地端的文件系统中&#xff0c;其他服务器如果想访问共享目录&#…

C++原型模式

原型模式实现方式 原型模式的结构 抽象原型类&#xff1a;规定了具体原型对象必须实现的接口。具体原型类&#xff1a;实现抽象原型类的 clone() 方法&#xff0c;它是可被复制的对象。访问类&#xff1a;使用具体原型类中的 clone() 方法来复制新的对象。 //父类 class Protot…

单链表经典算法 面试题--力扣02.04

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建新链表&#xff1a;大链表和小链表 将pcur节点小于x的值&#xff0c;尾插在小链表中 将pcur节点大于或等于x的值&#xff0c;尾插在大链表中 最终---- return lessHead->…

护眼 保护眼睛

高度近视600度的我&#xff0c;花了4个月时间度数降了50度&#xff0c;又花了一个多月的时间&#xff0c;双眼50度散光清零了。 然后就有人问我:散光都可以恢复吗&#xff1f; 我有点被问懵了&#xff0c;散光难道不容易恢复吗&#xff1f;直到我在网上查了一下&#xff0c;才发…