ahooks.js:一款强大的React Hooks库及其API使用教程(五)

    • 一、ahooks.js简介
    • 二、ahooks.js安装
    • 三、继续ahooks.js API的介绍与使用教程
      • 61. useEventTarget
      • 62. useExternal
      • 63. useFavicon
      • 64. useMutationObserver
      • 65. useLongPress
      • 66. useScroll
      • 67. useResponsive
      • 68. useFocusWithin
      • 69. useControllableValue
      • 70. useEventEmitter

一、ahooks.js简介

ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。

二、ahooks.js安装

使用npm或yarn安装ahooks:

npm install ahooks
# 或者
yarn add ahooks

三、继续ahooks.js API的介绍与使用教程

API介绍合集:

  • ahooks.js:一款强大的React Hooks库及其API使用教程(一)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(二)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(三)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(四)

61. useEventTarget

useEventTarget 是一个用于创建并管理事件目标的 Hook。

    import { useEventTarget } from 'ahooks';function App() {const [value, { reset, onChange }] = useEventTarget();return (<div><input value={value} onChange={onChange} /><button onClick={reset}>Reset</button></div>);}

在上述代码中,useEventTarget返回一个数组,第一个元素是当前的值,第二个元素是一个包含 resetonChange 方法的对象。onChange 方法用于处理输入变化,reset 方法用于重置值。

62. useExternal

useExternal 是一个用于动态加载外部脚本或样式的 Hook。

    import { useExternal } from 'ahooks';function App() {const status = useExternal('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js');return (<div><p>{status}</p></div>);}

在上述代码中,useExternal接收一个外部资源的 URL 作为参数,并返回加载状态。

63. useFavicon

useFavicon 是一个用于动态更改网页图标的 Hook。

    import { useFavicon } from 'ahooks';function App() {useFavicon('/new-icon.ico');return (<div><p>Check the favicon!</p></div>);}

在上述代码中,useFavicon接收一个新的 favicon 的 URL 作为参数。

64. useMutationObserver

useMutationObserver 是一个用于监听 DOM 变化的 Hook。

    import { useMutationObserver } from 'ahooks';function App() {const ref = useRef();useMutationObserver(ref, mutations => {// handle mutations});return (<div ref={ref}><p>Content</p></div>);}

在上述代码中,useMutationObserver接收一个 ref 和一个处理函数。当 ref 所引用的 DOM 元素发生变化时,处理函数将被调用。

65. useLongPress

useLongPress 是一个用于处理长按事件的 Hook。

    import { useLongPress } from 'ahooks';function App() {const longPressEvents = useLongPress(() => {console.log('Long press activated');});return (<button {...longPressEvents}>Long Press Me</button>);}

在上述代码中,useLongPress接收一个处理函数,返回一个可以绑定到元素上的事件处理器对象。

66. useScroll

useScroll 是一个用于获取滚动位置的 Hook。

    import { useScroll } from 'ahooks';function App() {const position = useScroll();return (<div><p>Scroll position: {position.top}, {position.left}</p></div>);}

在上述代码中,useScroll返回一个包含 topleft 属性的对象,表示滚动位置。

67. useResponsive

useResponsive 是一个用于响应式编程的 Hook。

    import { useResponsive } from 'ahooks';function App() {const screen = useResponsive();return (<div><p>Current screen: {screen.isDesktop ? 'Desktop' : 'Mobile'}</p></div>);}

在上述代码中,useResponsive返回一个对象,该对象包含了一些布尔值属性,如 isDesktopisMobile,表示当前屏幕类型。

68. useFocusWithin

useFocusWithin 是一个用于处理元素内部焦点状态的 Hook。

    import { useFocusWithin } from 'ahooks';function App() {const { isFocusWithin } = useFocusWithin();return (<div><input /><p>{isFocusWithin ? 'Focused' : 'Not Focused'}</p></div>);}

在上述代码中,useFocusWithin返回一个对象,该对象包含一个 isFocusWithin 属性,表示元素内部是否有焦点。

69. useControllableValue

useControllableValue 是一个用于处理可控制值的 Hook。

    import { useControllableValue } from 'ahooks';function App() {const [value, setValue] = useControllableValue();return (<div><input value={value} onChange={e => setValue(e.target.value)} /></div>);}

在上述代码中,useControllableValue返回一个数组,第一个元素是当前的值,第二个元素是一个用于设置该值的函数。

70. useEventEmitter

useEventEmitter 是一个用于创建事件发射器的 Hook。

    import { useEventEmitter } from 'ahooks';function App() {const emitter = useEventEmitter();useEffect(() => {emitter.on('message', msg => {console.log(msg);});emitter.emit('message', 'Hello');}, []);return (<div><p>Check the console!</p></div>);}

在上述代码中,useEventEmitter返回一个事件发射器对象,你可以在其上注册事件并发出事件。

更多关于ahooks.js的API介绍,请查看专栏:ahooks.js:一款强大的React Hooks库

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

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

相关文章

简单介绍 CPU 的工作原理

内部架构 CPU 的根本任务就是执行指令&#xff0c;对计算机来说最终都是一串由 0 和 1 组成的序列。CPU 从逻辑上可以划分成 3 个模块&#xff0c;分别是控制单元、运算单元和存储单元 。其内部架构如下&#xff1a; 【1】控制单元 控制单元是整个CPU的指挥控制中心&#xff…

2023年Java核心技术面试第二篇(篇篇万字精讲)

目录 四. 强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;幻象引用之间的区别&#xff1f; 1.前言 2.强引用 2.1 强引用赋值为null 2.2 超过了引用的作用域 2.2.1 描述&#xff1a; 2.2.2 作用域内&#xff1a; 2.2.3 不在作用域内: 3. 软引用&#xff08;SoftRefere…

华为云classroom赋能--Toolkit系列插件DevSecOps助力开发者提速

一、前言 DevOps的概念想必大家都不陌生&#xff0c;它是一组过程、方法与系统的统称&#xff0c;通过它可以对交付速率、协作效率、部署频率速率、质量、安全和可靠性等进行提升改善。相比传统的软件开发模式&#xff0c;它是一种工作方式和文化的转变&#xff0c;把开发者和…

C++笔记之注册的含义

C笔记之注册的含义 code review! 文章目录 C笔记之注册的含义1.注册对象到Qt的信号槽系统中2.注册函数到Qt的元对象系统中元对象系统例1例2 3.注册自定义类型到C STL容器中4.将函数指针传递给另一个类&#xff0c;注册回调函数class ICallback存在的意义例1&#xff0c;用于说…

Python Opencv实践 - 图像中值滤波

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape) pixel_count img.shape[0] * img.shape[1] print(pixel_count)#为图像添加椒盐噪声 #参考资料&#xf…

Go语言规范:高质量编程及编码规范

一、简介 高质量编程是指以高标准和良好实践来编写可读、可维护、可测试和性能等方面的优秀表现的代码。 各种边界条件是否考虑完备异常情况处理、稳定性保证易读易维护 &#xff08;一&#xff09;编码原则 从指令的角度考虑&#xff0c;开发中应如何编码&#xff0c;才能减…

Java中异常的详细讲解与细节讨论

用一个代码引出异常为什么要使用异常 代码&#xff1a; public static void main(Sting args[]){int n1 1;int n2 0;System.out.println(n1/n2);//这里会抛ArihmaticException,因为除数不能为0,若未用异常处理机制则程序直接结束&#xff0c;后面的代码将不执行。这样很不好…

windows ipv4 多ip地址设置,默认网关跃点和自动跃点是什么意思?(跃点数)

文章目录 Windows中的IPv4多IP地址设置以及默认网关跃点和自动跃点的含义引言IPv4和IPv6&#xff1a;简介多IP地址设置&#xff1a;Windows环境中的实现默认网关跃点&#xff1a;概念和作用自动跃点&#xff1a;何时使用&#xff1f;关于“跃点数”如何确定应该设置多少跃点数&…

Docker 之 docker-compose.yml 配置项

指定 Eggjs 的容器运行环境&#xff0c;代替项目中的 env 配置文件 # 其他配置 web:# 其他配置environment:-EGG_SERVER_ENVprod # 此处指定了web容器的运行环境为prod, 等同于在Eggjs中env文件内设置成prod # 其他配置指定容器的网络&#xff0c;固定 IP # 其他配置 networks:…

我的创作纪念日(C++修仙练气期总结)

分享自己最喜欢的一首歌&#xff1a;空想フォレスト—伊東歌詞太郎 机缘 现在想想自己在CSDN创作的原因&#xff0c;一开始其实就是想着拿着博客当做自己的学习笔记&#xff0c;笔记嘛&#xff0c;随便写写&#xff0c;自己看得懂就ok了的态度凸(艹皿艹 )。也是用来作为自己学习…

vue3+element下拉多选框组件

<!-- 下拉多选 --> <template><div class"select-checked"><el-select v-model"selected" :class"{ all: optionsAll, hidden: selectedOptions.data.length < 2 }" multipleplaceholder"请选择" :popper-app…

【全链路追踪】XXL-JOB添加TraceID

文章目录 一、背景调用路径部署环境问题 二、方案三、Demo示例1、MDC2、RequestInterceptor3、HandlerInterceptor4、logback.xml 四、后续改进思路 一、背景 首先这个项目属于小型项目&#xff0c;由于人手以及时间限制&#xff0c;并未引入Skywalking等中间件来做调用链路追…

vite 项目搭建

1. 创建 vite 项目 npm create vite@latest 2. 安装sass/less ( 一般我使用sass ) cnpm add -D sasscnpm add -D less 3. 自动导入 两个插件 使用之后,不用导入vue中hook reactive ref cnpm install -D unplugin-vue-components unplugin-auto-import 在 vite.config.…

STM32设置为I2C从机模式(HAL库版本)

STM32设置为I2C从机模式&#xff08;HAL库版本&#xff09; 目录 STM32设置为I2C从机模式&#xff08;HAL库版本&#xff09;前言1 硬件连接2 软件编程2.1 步骤分解2.2 测试用例 3 运行测试3.1 I2C连续写入3.2 I2C连续读取3.3 I2C单次读写测试 4 总结 前言 我之前出过一篇关于…

Claude 2 国内镜像站

Claudeai是什么&#xff1f; Claude 2被称为ChatGPT最强劲的竞争对手&#xff0c;支持100K上下文对话&#xff0c;并且可以同时和5个文档进行对话&#xff0c;不过国内目前无法正常实用的&#xff0c;而claudeai是一个Claude 2 国内镜像站&#xff0c;并且免翻可用&#xff0…

Android 电池容量获取

Android 原生设置电池容量是在 power_profile.xml 中配置&#xff0c;此文件默认在 frameworks 目录下&#xff0c;也可能有 overlay 目录文件。 <!-- This is the battery capacity in mAh (measured at nominal voltage) --><item name"battery.capacity"…

实验三 HBase1.2.6安装及配置

系列文章目录 文章目录 系列文章目录前言一、HBase1.2.6的安装二、HBase1.2.6的配置2.1 单机模式配置2.2 伪分布式模式配置 总结参考 前言 在安装HBase1.2.6之前&#xff0c;需要安装好hadoop2.7.6。 本篇文章参考&#xff1a;HBase2.2.2安装和编程实践指南 一、HBase1.2.6的安…

Android---- 一个完整的小项目(消防app)

前言&#xff1a; 针对不同群体的需求&#xff0c;想着应该拓展写方向。医疗app很受大家喜欢&#xff0c;就打算顺手写个消防app&#xff0c;里面基础框架还是挺简洁 规整的。登陆注册和本地数据库写的便于大家理解。是广大学子的毕设首选啊&#xff01; 此app主要为了传递 消防…

python计算模板图像与原图像各区域的相似度

目录 1、解释说明&#xff1a; 2、使用示例&#xff1a; 3、注意事项&#xff1a; 1、解释说明&#xff1a; 在Python中&#xff0c;我们可以使用OpenCV库进行图像处理和计算机视觉任务。其中&#xff0c;模板匹配是一种常见的方法&#xff0c;用于在一幅图像中识别出与给定…

代码随想录打卡—day24—【回溯】— 基础最新8.20+8.22

1 理论基础 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯算法——回溯和递归是相辅相成的。回溯法的效率&#xff0c;回溯法其实就是暴力查找&#xff0c;并不是什么高效的算法。回溯法解决的问题都可以抽象为树形结构&#xff08;N叉树&#xff09; 1.1…