【React】常用Hook函数的梳理和总结(第二篇)

1. 前言

       本篇梳理和总结React中常用的Hook函数。 欢迎大家来到Hook的世界,真的贼好用~

2. 常用Hook函数
Hook说明示例
useState(initialState)

功能:为函数组件添加状态变量,输入可是基本数据类型或引用数据类型,也可以是不带参数的纯函数,函数返回值作为初始值,输出则是状态和set函数组成的二值数组

输入:State | Function

输出:Array<State | Function>

const [name, setName] = useState(‘Xiaoming’);

setName(name => name + 'LI');

useReducer(reducer, initialArg, init?)

功能:创建一个用于管理状态的reducer,输出则是状态和dispatch函数组成的二值数组

输入

reducer - 用于更新state的纯函数,参数为state和action,返回更新后的state

initialArg - 用于初始化state的任意值

init? - 计算初始值的函数,如果存在,init(initialArg)执行结果作为初始值

输出:Array<State | Function>

const [name, dispatch] = useReducer(reducer, {name: 'xiaoming'})

dispatch({name: 'xiaoming'})

useEffect(setup, dependencies?)

功能:将组件与外部系统同步

输入

setup - 处理Effect的函数,setup函数选择性返回一个清理函数cleanup

dependencies - 依赖项数组

输出:undefined

Effect(() => {

    const connection = createConnection();

    connection.connect();

return () => {

    connection.close();    

};

}, []);

useLayoutEffect(setup, dependencies?)

功能:useLayoutEffect是useEffect的一个版本,在浏览器重绘屏幕之前触发。

注:可以影响性能,尽可能用useEffect

输入:同useEffect

输出:同useEffect

<略>
useInsertionEffect(setup, dependencies?)功能:为CSS-in-JS库的作者特意打造,可以在布局副作用触发之前将元素插入到DOM中<略>
useMemo(calculateValue, dependencies)

功能:缓存每次重新渲染都需要计算的结果

输入

calculateValue - 计算缓存值的不带参数的纯函数,返回值可以是任意类型

dependencies - 依赖项数组

输出:返回不带参数调用calculateValue的结果

const cachedData = useMemo(() =>  filterTodos(todos, tab), [todos, tab])

useCallback(fn, dependencies)

功能:缓存每次重新渲染都需要计算的结果

输入

fn - 需要缓存的函数,此函数接受任何参数并返回任何值

dependencies - 依赖项数组

输出:返回传入的fn,依赖项数组改变,则返回本次渲染传入的fn

const handleSubmit = useCallback((orderDetails) => {

  post('/product/' + productId + '/buy', {     referrer, orderDetails,

});

}, [productId, referrer]);

useRef(initialValue)

功能:引用一个不需要渲染的值

输入:initialValue - ref对象current属性的初始值,可以是任意类型

输出:{current: any} - 一个属性的对象

const inputRef = useRef(null);

useContext(SomeContext)

功能:读取和订阅组件中的context

输入:SomeContext - createContext创建的context

输出:返回context的值

const Context = createContext(/*初始值*/);

const value = useContext(Context);

useId()

功能:生成传递给无障碍属性的唯一ID

输入:无

输出:字符串ID

本篇仅列出几个常用的Hook,还有很多Hook,可以查阅

React 内置 Hook – React 中文文档

3. 总结 

        作为开发人员,想要记住所有API是很困难的事情,建议大家学习过程中,多收藏官网或个人整理好的文档,开发过程遇到不会可以查阅API文档。

注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~  

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

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

相关文章

2023最大技术潮:大模型冲击下的智能汽车

作者 |德新 编辑 |王博 过去这年最大的技术潮&#xff0c;非大模型莫属。 2023年初&#xff0c;由ChatGPT掀起的浪花&#xff0c;迅速地演变成了席卷全球的AI科技浪潮。汽车行业在其中也不可避免。各大车企纷纷投入与大模型相关的布局。 长城官宣成立了AI Lab&#xff0c;到…

尝试解决 H5无法播放mp3录音问题

1.问题描述 将H5传递的录音 media_id 通过微信获取临时素材接口获取到录音文件流之后&#xff0c;转为mp3文件上传到服务器。但是H5却没办法播放这个mp3文件。这个文件只能在播放器上播放&#xff0c;比如网易云什么的。不能直接在微信&#xff0c;浏览器上播放 2.原因分析 通…

山西电力市场日前价格预测【2024-01-04】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-04&#xff09;山西电力市场全天平均日前电价为197.93元/MWh。其中&#xff0c;最高日前电价为376.04元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

Go语言基础简单了解

文章目录 前言关于Go学习流程 基础语法注释变量常量数据类型运算符fmt库 流程控制if、switch、selectfor、break、continue遍历String 函数值传递和引用传递deferinit匿名、回调、闭包函数 数组和切片Map结构体自定义数据类型接口协程和channel线程锁异常处理泛型文件读取文件写…

数据库中的几种锁

数据库锁 1.数据库锁的种类 以 mysql innoDB 为例&#xff0c;数据库的锁有 排他锁&#xff0c;共享锁&#xff0c;意向锁&#xff0c;自增锁&#xff0c;间隙锁&#xff0c;锁的范围有包括&#xff0c;行锁&#xff0c;表锁 &#xff0c;区间锁。 从应用研发的视角&#xff…

C++:第十一讲DFS深搜

Everyday English Your optimal career is simply this: Share the real you with physical world through th e process of creative self-expression. 你的最佳职业很简单&#xff0c;就是这样&#xff1a;通过创造性自我表达的途径和世界分享真实的你。 前言 今天带着大家…

一元函数微分学——刷题(14

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 只要知道反函数求导等于原函数的导数的倒数&#xff0c;那就很好求解了&#xff0c;这不过要先处理好x和y的对应关系&#xff0c;知…

2023年数据中心电源和冷却十大故事

1.数据中心采用液体冷却是否会增加&#xff1f; 数据中心市场的液体冷却部署正在经历前所未有的增长。数据中心运营商正在将投资集中在专门用于人工智能工作负载的更高密度设备上&#xff0c;这类服务器应该成为液体冷却部署的首选。然而&#xff0c;对高效空气冷却的需求也在…

本地套接字通信

本地套接字&#xff08;Unix域套接字&#xff09;是用于在同一台机器上的进程之间进行通信的一种方式。它不涉及网络协议&#xff0c;而是直接在文件系统中创建一个套接字文件&#xff0c;进程可以通过该文件进行通信。 本地套接字的作用&#xff1a;本地的进程间通信 有关系的…

MFC:CDC 类与成员

CDC 定义 设备上下文对象类&#xff1b; 使用成员函数可以进行所有的绘图操作&#xff1b; 作用 获取和设置绘图属性、映射&#xff0c;处理视点、窗口扩展、转换坐标&#xff0c;处理区域、剪贴、绘制直线及绘制简单椭圆和多边形等形状&#xff1b; 安全型图形设备接口&am…

代码随想录算法训练营第二十九天(回溯算法篇)|78. 子集

这周开始实习了&#xff0c;期间改了改成绩已经出来的毕业论文&#xff0c;发给导师&#xff0c;不知道有没有发表的机会。实习后&#xff0c;虽然实际任务不多&#xff0c;但每天七点起床&#xff0c;来回通勤两个小时&#xff0c;已让我疲惫。好久没有练手了&#xff0c;这次…

语音AI小夜灯项目

一、项目简介 使用ESP32-S3N8R8模块作为主控芯片&#xff0c;S3内核增加了用于加速神经网络计算和信号处理等的指令&#xff0c;这使得我们可以使用它来快速解析训练好的语音模型进行语音识别的功能。 二、原理解析 本项目由四个部分组成&#xff0c;电源部分、LED照明部分、…

【Manacher】LeetCode-5. 最长回文子串

5. 最长回文子串。 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"…

uniapp二维码有效期倒计时三分钟的效果是实现

需求&#xff1a; 会员码时效只有3分钟有效期&#xff0c;需要在页面倒计时3分钟&#xff0c;没有长按保存的效果实现 效果&#xff1a; 代码&#xff1a; <templete> <view> <uni-list> <view class"custom-list-item" click"onCode(c…

java代码规范(适合写程序之前先了解有助于开发协同)

目录 一、类定义 二、方法定义 三、接口定义 四、变量定义 1、命名规范&#xff1a; 2、类型规范&#xff1a; 3、常量规范&#xff1a; 五、static关键字 1、静态变量&#xff08;类变量&#xff09;&#xff1a; 2、静态方法&#xff08;类方法&#xff09;&#x…

AUTOSAR软件手册文档缩写描述,AUTOSAR_TR_PredefinedNames

由于AUTOSAR文档中的缩写太多&#xff0c;入门者看起开不方便。例如TR、SWS、SRS、EXP模块。 下载链接&#xff1a;https://www.autosar.org/fileadmin/standards/R21-11/FO/AUTOSAR_TR_PredefinedNames.pdf

Leetcode的AC指南 —— 字符串:151. 反转字符串中的单词

摘要&#xff1a; Leetcode的AC指南 —— 字符串&#xff1a;151. 反转字符串中的单词。题目介绍&#xff1a;给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序…

android——自定义TextView

效果展示&#xff1a; 代码解析&#xff1a; 1、首先设置自定义属性&#xff08;res/values下新建一个attrs.xml文件&#xff09; <?xml version"1.0" encoding"utf-8"?> <resources><!-- name 自定义view的名字 CustomTextView--&…

Spring Bean的生命周期(钩子函数)

借鉴&#xff1a;https://www.cnblogs.com/liweimingbk/p/17843970.html https://blog.csdn.net/lxz352907839/article/details/128634404 一、Spring Bean生命周期 如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口&#xff0c;那么在加载Spring配置文…

php composer安装

引言 Composer 是 PHP 中的依赖管理工具。它允许您声明您的项目所依赖的库&#xff0c;并且它将为您管理&#xff08;安装/更新&#xff09;它们。 官网链接&#xff1a;Introduction - Composer 安装 要在当前目录中快速安装 Composer&#xff0c;请在终端中运行以下脚本。…