自定义hook是什么

简介: 自定义hook是什么

使用Vue3的组合API封装的可复用的功能函数

自定义hook的作用类似于vue2中的mixin技术

自定义Hook的优势: 很清楚复用功能代码的来源, 更清楚易懂7

首先在src文件夹下定义一个hooks文件夹,在文件夹下创建一个index.js文件,然后在文件中写下以下代码

import { ref, onMounted, onUnmounted } from 'vue'
/*
收集用户鼠标点击的页面坐标
*/
export default function useMousePosition () {
// 初始化坐标数据
const x = ref(-1)
const y = ref(-1)
// 用于收集点击事件坐标的函数
const updatePosition = (e: MouseEvent) => {
x.value = e.pageX
y.value = e.pageY
}
// 挂载后绑定点击监听
onMounted(() => {
document.addEventListener('click', updatePosition)
})
// 卸载前解绑点击监听
onUnmounted(() => {
document.removeEventListener('click', updatePosition)
})
return {x, y}
}

然后再在某个使用到index.js功能的组件引入js文件,例如:

<template>
    <div>
        <h2>x: {{x}}, y: {{y}}</h2>
    </div>
</template>
<script>
import { ref } from "vue"
/*
在组件中引入并使用自定义hook
自定义hook的作用类似于vue2中的mixin技术
自定义Hook的优势: 很清楚复用功能代码的来源, 更清楚易懂
*/
import useMousePosition from './hooks/useMousePosition'
    export default {
        setup() {
        const {x, y} = useMousePosition()
            return {
                x,
                y
            }
        }
    }
</script>
相关文章
|
6月前
|
人工智能 安全 API
OpenClaw保姆级教程:阿里云/本地部署配置百炼Coding Plan API+核心Skill清单及常见问题解答
2026年,OpenClaw(昵称“小龙虾”)的核心价值早已不是“能聊天”,而是通过Skills(技能插件)连接工具、网站与系统,实现从“对话建议”到“落地执行”的跨越。但多数用户部署后陷入“装而不用”的困境——要么盲目堆砌技能导致功能冲突,要么忽视安全风险不敢用于关键场景。
1225 1
|
8月前
|
人工智能 弹性计算 API
2026阿里云人工智能PAI免费试用:PAI-EAS模型在线服务A10/V100等500元1个月
阿里云PAI推出模型在线服务PAI-EAS,支持Qwen3、Llama等主流模型一键部署为高可用API,弹性伸缩、GPU加速,新用户享500元代金券,免费试用A10/V100等GPU实例,助力低成本高效推理。
|
8月前
|
Linux 网络安全
一文读懂NAT:SNAT与DNAT的“庐山真面目”及firewalld实战配置
本文详解NAT核心技——SNAT与DNAT,通过生活类比解析地址转换原理。针对不同系统版本,分别介绍firewalld新旧版配置方法:旧版用Direct接口,新版推荐Policy策略模式,涵盖命令示例与验证方式,助你轻松实现内网共享上网与服务发布。
|
存储 弹性计算 运维
阿里云服务器全解析:ECS是什么、应用场景、租用流程及优缺点分析
阿里云ECS(Elastic Compute Service)是阿里云提供的高性能、高可用的云计算服务,支持弹性扩展、多样化实例类型和多种计费模式。适用于网站搭建、数据处理、运维测试等多种场景,具备分钟级交付、安全可靠、成本低、易运维等优势,是企业及开发者上云的理想选择。
1316 5
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
1130 1
|
机器学习/深度学习 人工智能 监控
什么是信息化?什么是数字化?这两者有什么联系和区别?
本文探讨了信息化与数字化的概念、联系及区别。信息化是将线下业务流程线上化,提升效率;数字化则基于大数据和新技术优化企业运营模式,重构商业逻辑。两者层层递进,信息化为基础,数字化为升级。文中通过实例对比二者在理念、方法、数据应用等方面差异,并强调数字化转型需明确目标,借助低代码等工具实现能力重构,推动企业全价值链连通与效率提升。总结指出,真正的转型是能力的全面提升,而非单纯技术替换。
|
11月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
637 3
|
11月前
|
监控 网络协议 Shell
内网穿透与代理:Netcat隧道技术深度解析
本文深入解析Netcat内网穿透隧道技术,结合典型网络拓扑,详解通过边界服务器建立反向Shell隧道的三步流程,剖析数据流向与协议机制,涵盖渗透测试应用、高级持久化与加密变种,并探讨防御检测及替代工具,助力红蓝双方提升实战能力。(238字)
819 5
|
存储 API 开发工具
openim如何与现有系统集成
本文介绍如何将OpenIM集成到现有系统以实现聊天功能。通过REST API,您的应用服务器可与IM服务器对接,完成用户注册、信息修改及获取IM Token等操作。客户端集成OpenIM SDK,实现用户登录和聊天功能。OpenIM是开源即时通讯解决方案的领军者,在GitHub上获得超14,000星标。开发文档和GitHub仓库提供详细支持。
1146 1

热门文章

最新文章