当前位置: 首页 > news >正文

Vue3自定义hooks

1. 什么是自定义hooks?

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

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

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

2. 操作步骤

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

3. 示例

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

3.1 加法功能-hook
// 加法功能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
// 减法功能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.mrgr.cn/news/3672.html

相关文章:

  • 基于yolov5 人体行为检测 对 跌倒 站立 蹲下 坐下 跑 五种行为检测目标检测
  • Spark MLlib 特征工程系列—特征转换MinMaxScaler
  • 如何在 Ubuntu 14.04 上使用 Nginx Web 服务器安装 Laravel
  • vue面试题十八
  • 用Golang实现图形面积计算
  • 字节显示转换操作类 - C#小函数类推荐
  • Zotero 常用插件介绍
  • Java-HttpHeaders请求头或响应头
  • xfs Vs ext4?
  • c语言利用三目运算符制作订单判断免运费程序
  • Windows 11 24H2 终于允许多个应用程序同时使用摄像头
  • Mac安装Typora
  • 用户和实体行为分析(UEBA)基础指南及解决方案
  • 2024.8.21
  • 34.给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。要求算法时间复杂度是 O(log n)
  • 51单片机学习
  • 未设置辅助手机的谷歌账号停用,申诉回来后登录需要手机验证,验证两次后成功恢复。
  • 【Axure视频教程】中继器表格——设置文字颜色
  • C++ 设计模式——建造者模式
  • mysql在k8s环境里安装及搭建主从架构