react-10 函数式写法rsf,配合HOOKS钩子函数

news2024/11/20 2:41:53

 

函数式跨组件通信: useContext 实现跨组件传值,内层组件获取context中的值

用来解决同一个父组件的后代组件之间的数据共享问题, 同一个父组件的所有后代组件都可以用 useContext() 从最近的 context 中获取.

性能优化:useMemo :用于组件性能优化(缓存计算属性,变化才执行)是 通过缓存值的方式实现性能优化

useMemo(callback, array):性能优化,利用了闭包的特性,会返回一个记忆值, 通过

记忆值来避免在每个渲染上都执行高开销的计算(计算缓存);适用于复杂的计算场景,如复杂的列表渲染,对象深拷贝...

//   //   //

1.   组件初次渲染,第一个参数的回调函数会执行并将计数的结果缓存起来

2.   组件更新时:只有当第二个参数(依赖数组)中的值改变时,第一个参数的回调函数才会执行并将放回的结果缓存起来。

3.   组件更新时:如果只有当第二个参数(依赖数组)中的值没有改变,则第一个参数的回调函数不会执行,直接返回上一次缓存的结果。

eg:其他的导致组件更新了,有些已经初次渲染过的复杂计算场景,没有发生改变,却被迫再次执行了。

解决:只有监听的依赖数组发生改变,才会执行useMemo,减少了开销,实现了性能优化,很像vue中计数属性computed

 

性能优化:useCallback:用于组件性能优化(父传子,子变化才执行):配合高阶组件memo来对比子是否发生变化。是通过缓存回调函数返回并缓存起来

useCallback(callback, array):也是用于性能优化,与 useMemo()不同的是,返回值是

callback 本身;

//   //   //

1.   组件初次渲染,会将第一个参数的回调函数返回并缓存起来

2.   组件更新时,只有当第二个参数(依赖数组)中的值发生变化时,才会重新定义并返回第一个参数的回调含糊,并缓存起来

3.   组件更新时,如果第二个参数()中的值没有改变,则返回上一次缓存的回调函数

配合:::

// memo 高阶组件,对比是否发生改变。在组件更新时,会对比更新前的props和更新后的props,如果没有变化则阻止组件更新,否则继续更新,

必须配合useMemo 或 useCallback才能实现组件性能优化

memo高阶组件

 

2. react-router 相关的 Hooks:(函数式要配合最新版路由使用)

import {useNavigate, useLocation, useParams, useSearchParams } from "react-router-dom"

  1. useNavigate
  2. useLocation
  3. useParams
  4. useSearchParams

3. redux 相关 Hooks 定义:

4. 自定义 Hooks

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

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

相关文章

cv2 五边形矫正,python ,多边形透视变换

#图像透视变换--矫正 #根据最大的5边形进行透视变换 #获取最大和最次长 周长对应的轮廓 #该轮廓进行5边形拟合逼近 #进行透视变换:应用两线交点 import numpy as np import cv2#大津阈值法 OSTU def myApprox(con,pointnum5):# con为预先得到的最大轮廓num 0.001…

2023年CDGA/CDGP数据治理工程师认证报名需要什么条件?

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

mybatis01-Lombok、mybatis原理、参数处理、模糊查询、结果封装

mybatis01 Lombok 一、Lombok的使用 Lombok 是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过加注解的方式,不需要为类编写getter、setter、constructor或equals,同时可以自动化日志变量。 第一步、在pom.xml中加…

基于动态车辆模型的百度Apollo LQR和MPC横向控制算法分析(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 Apollo 是由百度发起的一个高效、灵活的基于自动驾驶的测试和研发的平台。Apollo 的主要逻辑为局部规划 轨道跟踪。在局部规划…

4.1 插值概念与基础理论

学习目标: 学习插值的基础理论可以从以下几个方面入手: 理解插值的概念:插值是指根据已知数据点的函数值,构造出经过这些点的函数,用于在已知数据点之间估计函数值。可以将其看做是一种函数逼近的方法。 掌握插值多项…

【Linux】MySQL高可用之Mysql读写分离实践

一、MySQL读写分离原理 读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。 二、读写分离实践 绝大多数的企业的…

居家办公远程控制电脑怎么操作

居家办公或者混合办公,正成为一种新的流行趋势。如何更好地居家办公,实现更高的工作效率和更舒适办公体验,我们总结出如下建议。 无论您是每周远程工作几天还是全职工作,无论是出于选择还是因为健康状况或天气事件,都…

部署YUM仓库及NFS共享服务

一、YUM仓库服务 1)YUM概述 YUM(Yellow dog Updater Modified) 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将…

Kaggle往期赛 | 多目标推荐系统大赛baseline

来源:深度之眼 作者:比赛教研部 编辑:学姐 Kaggle OTTO – Multi-Objective Recommender System多目标推荐系统大赛 赛题分析baseline 1、赛题链接 https://www.kaggle.com/competitions/otto-recommender-system/overview 2、赛题描述 本…

聚观早报 |字节与Meta争夺VR开发者;苹果设备无故要求输入ID密码

今日要闻:字节与Meta争夺VR应用开发者;苹果设备无故要求输入ID密码;余承东称25年是智能电动汽车分水岭;小鹏回应G6售价及配置信息曝光;亚马逊将在爱尔兰裁员200人 字节与Meta争夺VR应用开发者 4 月 14 日消息&#xf…

运筹说 第89期|网络计划-网络计划的优化

通过画网络图并计算时间参数,我们已得到了一个初步的网络计划,而网络计划技术的核心却在于从工期、成本、资源等方面对这个初步方案做进一步的改善和调整,以求得最佳效果,这一过程,就是网络计划的优化。接下来让我们跟…

家用洗地机到底好不好用?国产性价比高的品牌

洗地机作为一种高效、节能、环保、卫生的清洁设备,不仅能够提升清洁效率,还能有效减少清洁成本,更重要的是,它可以帮助我们创造一个更加健康和舒适的生活环境。而且除菌方面大部分都是采用电解水的除菌方式,更加环保和…

【我的创作纪念日—5周年】

序言 用心生活,用力向上,微笑前行,就是对生活最好的回馈。 机缘 最开始写文章,没想那么多,主要是记录一下,就随便写了下,后来认识了一些写文章的小伙伴,在和他们的沟通中越来越体会到…

PACS/RIS影像管理系统源码,采用VC++编程语言,提供三维图像后处理和算法

PACS/RIS影像管理系统源码 医学影像管理(PACS/RIS)系统是一套完整的提供DICOM标准遵从、高效的实现医学影像归档存储、通讯和诊断处理功能的医学影像信息管理系统,其基于DICOM/HL7标准的开放性架构和模块化的结构体系,确保了系统…

自动驾驶就是在扯?比亚迪你凭什么?

比亚迪“炮轰”自动驾驶 上周,在比亚迪2022年财报交流会上,有投资人问比亚迪在自动驾驶方面的发展进度和规划,比亚迪集团董事长王传福直言:“无人驾驶那都是扯淡,弄个虚头巴脑的东西那都是忽悠,它就是一场皇…

【超算/先进计算学习】日报4

目录 今日已完成任务列表遇到的问题及解决方案任务完成详细笔记高性能算法计算机算法的特征及内涵科学计算算法的主要分类高性能算法与传统算法的异同稀疏矩阵向量乘法 SpMV 与稀疏矩阵存储结构常见的稀疏矩阵传统存储与其SpMV算法不同的稀疏矩阵传统存储结构存储效率与稀疏度针…

Linux进程概念及状态

Linux进程概念及进程状态 目录 Linux进程概念及进程状态引入1、什么是进程1.1 描述进程1.2 task_struct组织进程1.3 proc目录 2、进程标识符3、查看进程4、bash进程5、初始fork6、进程状态6.1 操作系统层面6.2 Linux内核源代码RSDX 6.3 僵尸进程6.4 孤儿进程关于kill指令 引入 …

nssctf web 入门(9)

[SWPUCTF 2021 新生赛]sql [SWPUCTF 2021 新生赛]sql 可以猜测做了过滤 这里可以bp跑一下看过滤了哪些 尝试发现过滤了空格/**/在sql中代表注释符在mysql中这个可以用来代表空格 发现--被过滤 #也不行我们试下url编码的#也就是%23 成功了 3个字段 得到库名test_db 这里提示非…

一篇文章让你彻底学会--防抖(并且自己可以手写)

Hi,有的小伙伴们在面试的时候会被要求手写防抖函数,很多都被难着了吧,宝贝,那你你没有理解防抖函数。 今天,就让我带你攻克它! 1.防抖 防抖:单位时间内,频繁触发事件,只执行最后一次。 人话:说…

嵌入式Linux(1):make menuconfig图形化界面

文章目录 搜索功能配置驱动状态退出和make menuconfig有关的三个文件make menuconfig会读取哪个目录下的Kconfig文件?为什么要复制成.config而不复制成其他的文件呢?在默认的deconfig上面通过make menuconfig来改配置,然后保存怎么和Makefile…