Vue3自定义hooks

embedded/2024/9/24 2:21:44/

1. 什么是自定义hooks?

以函数形式抽离一些可复用的方法像钩子一样挂着,随时可以引入和调用,实现高内聚低耦合的目标。

高内聚:指一个模块内部的功能应该尽可能相关,模块内的元素应紧密合作,完成单一且明确的任务。这样可以提高模块的可维护性和可重用性。

低耦合:指模块或组件之间的依赖性要低,即各个模块尽量独立,减少相互之间的影响。这样,当一个模块发生变化时,不会影响其他模块。

2. 操作步骤

将可复用功能抽离为外部JS文件(通常放在hooks文件夹)
文件名以use开头,比如:useDebounce
引用时将响应式变量或者方法显式解构暴露出来,比如:const { nameRef,Fn } = useDebounce()
(在setup函数里解构出自定义hooks的变量和方法)

3. 示例

简单的加减法计算,将加法和减法抽离为2个自定义Hooks,并且相互传递响应式数据。

3.1 加法功能-hook
javascript">// 加法功能hook
import { ref, watch } from 'vue'
const useSum = (num1, num2) => {const sumNum = ref(0)// [num1, num2] 同时监听多个ref// () => {} 的第一个参数是新的值,返回值是数组,使用[num1, num2]数组解构watch([num1, num2], ([num1, num2]) => {addFn(num1, num2)})const addFn = (num1, num2) => {sumNum.value = num1 + num2}return {sumNum,addFn}
}
export default useSum

3.2 减法功能-hook
javascript">// 减法功能hook
import { ref, watch } from 'vue'
const useSub = (num1, num2) => {const subNum = ref(0)// [num1, num2] 同时监听多个ref// () => {} 的第一个参数是新的值,返回值是数组,使用[num1, num2]数组解构watch([num1, num2], ([num1, num2]) => {subFn(num1, num2)})const subFn = (num1, num2) => {subNum.value = num1 - num2}return {subNum,subFn,}
}
export default useSub

3.3 加减法应用组件
<template><div>num1: <input type="text" v-model.number="num1" />num2: <input type="text" v-model.number="num2" /></div><span>加法等于: {{ sumNum }}</span><span>减法等于: {{ subNum }}</span>
</template><script setup>
import { ref } from 'vue'
import useSum from './hooks/useSum.js'
import useSub from './hooks/useSub.js'const num1 = ref(2)
const num2 = ref(4)// 加法hook
const { sumNum, addFn } = useSum(num1, num2)
addFn(num1.value, num2.value)// 减法hook
const { subNum, subFn } = useSub(num1, num2)
subFn(num1.value, num2.value)</script>


http://www.ppmy.cn/embedded/98389.html

相关文章

Python - sqlparse 解析库的基础使用

安装 首先打开命令行&#xff0c;输入&#xff1a; pip install sqlparse这样就显示已经安装好了 使用 创建一个 Python 项目&#xff0c;导入 sqlparse 包&#xff1a; 1. parse sql "select * from table1 where id 1;"# 1. parse # parse方法将 SQL语句 解析…

探索AI工作流工具:提升编程效率的三大利器

问题&#xff1a;面对屎山代码&#xff0c;你是如何处理的&#xff1f; 今天我将为你推荐三个强大的AI工作流工具&#xff0c;它们将彻底改变你的编程体验&#xff0c;让你在工作中如鱼得水&#xff0c;事半功倍&#xff01; 1. 代码解释器&#xff1a;解读复杂代码的利器 初…

C++ 状态机开发

1.状态机的基本概念 1.1 状态&#xff08;State&#xff09;&#xff1a;表示系统当前的条件或环境。比如&#xff0c;在交通信号灯的例子中&#xff0c;状态可以是红灯、绿灯或黄灯。 1.2 事件&#xff08;Event&#xff09;&#xff1a;表示某个外部或内部的动作&#xff0…

Linux - 权限

文章目录 一、用户二、文件 一、用户 1、Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 。 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“…

松下弧焊机器人维修 控制柜故障 连接线修复

一、Panasonic焊接机器人控制柜与机器人的接线 机器人的控制箱&#xff0c;一定要配对使用。松下焊接机器人控制柜已经记忆了机器人的绝对原点(机器人位置控制原点)。 二、编码器电缆 (圆形连接器) 1. 接口的插头插座要注意&#xff0c;插头要插到插座中。 2. 用一手握住电缆&a…

泊松自助法(Poisson Bootstrap Sampling):大型数据集上的自助抽样

自助抽样可以根据收集的样本推断总体的统计特征(如均值、十分位数、置信区间)。泊松自助抽样&#xff08;Poisson Bootstrap Sampling&#xff09;是一种用于统计分析中的重采样技术&#xff0c;特别是在机器学习和数据科学中用于模型评估和误差估计。这种方法的一个特点是保留…

仿真软件的功能有哪些?仿真软件助力科研与工程领域

仿真软件是一种强大的工具&#xff0c;可以帮助工程师和科学家在虚拟环境中模拟和分析各种现象和系统。它们具有广泛的应用领域&#xff0c;包括工程设计、科学研究、产品开发和决策支持等。 随着科技的飞速发展&#xff0c;仿真软件已成为科研与工程领域中不可或缺的工具。本文…

<Linux> 进程控制

目录 一、进程创建 1. fork函数 2. fork函数返回值 3. 写时拷贝 4. fork常规用法 5. fork调用失败原因 6. 如何创建多个子进程&#xff1f; 二、进程终止 1. 进程退出场景 2. 进程退出码 3. errno 4. 进程异常退出 5. 进程常见退出方法 5.1 return退出 5.2 exit退出 5.3 _ex…