vue3中hooks的介绍及用法

2023-10-27

大家好,今天这篇文章是介绍一下vue3中的hooks以及它的用法。本文内容主要有以下两点:

  1. 什么是hooks
  2. vue3中hooks的使用方法

一、 什么是hooks

hook是钩子的意思,看到“钩子”是不是就想到了钩子函数?事实上,hooks 还真是函数的一种写法。

vue3 借鉴 react hooks 开发出了 Composition API ,所以也就意味着 Composition API 也能进行自定义封装 hooks

vue3 中的 hooks 就是函数的一种写法,就是将文件的一些单独功能的js代码进行抽离出来,放到单独的js文件中,或者说是一些可以复用的公共方法/功能。其实 hooksvue2 中的 mixin 有点类似,但是相对 mixins 而言, hooks 更清楚复用功能代码的来源, 更清晰易懂。

二、hooks的用法

  1. src中创建一个hooks文件夹,用来存放hook文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXqAjsI3-1664532965382)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2714bea7b54b461dab887fdc5e68693b~tplv-k3u1fbpfcp-watermark.image?)]

  1. 根据需要写hook文件,比如要实现一个功能就是在 点击页面时,记录鼠标当前的位置,可以在hooks文件夹中新建一个文件useMousePosition.ts
// src/hooks/useMousePosition.ts
import { ref, onMounted, onUnmounted, Ref } from 'vue'

interface MousePosition {
  x: Ref<number>,
  y: Ref<number>
}
function useMousePosition(): MousePosition {
  const x = ref(0)
  const y = ref(0)

  const updateMouse = (e: MouseEvent) => {
    x.value = e.pageX
    y.value = e.pageY
  }

  onMounted(() => {
    document.addEventListener('click', updateMouse)
  })

  onUnmounted(() => {
    document.removeEventListener('click', updateMouse)
  })

  return { x, y }
}

export default useMousePosition
  1. hook文件的使用:在需要用到该hook功能的组件中的使用,比如在 test.vue文件中:
// src/views/test.vue
<template>
  <div>
    <p>X: {{ x }}</p>
    <p>Y: {{ y }}</p>
  </div>
</template>

<script lang="ts">
import { defineComponent} from 'vue'
// 引入hooks
import useMousePosition from '../../hooks/useMousePosition'
export default defineComponent({
  setup () {
    // 使用hooks功能
    const { x, y } = useMousePosition()

    return {
      x,
      y
    }
  }
})
</script>

以上就是vue3中hooks的使用,是不是觉得特别的简单清晰。

这篇文章算是初学者的一个记录,希望对您有所帮助,也请感兴趣的大佬不吝赐教!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3中hooks的介绍及用法 的相关文章

随机推荐

  • Activity过度动画

    Activity过度动画 java代码 res文件 enter anim xml exit anim xml java代码 button setOnClickListener new View OnClickListener Overrid
  • c语言数字转字符串不用函数,不使用c的任何库函数 实现字符串到整数的转换 整数到字符串的转换...

    转载请标明出处 http www cnblogs com NongSi Net p 6805844 html 今天主要总结下 完成编程 1 除printf函数之外 不用任何c语言库函数 实现将字符串转化为整数的函数myatoi 可以支持负整
  • 大数据时代的Tcaplus游戏存储

    大数据时代的Tcaplus游戏存储 shiweizhang 2015 10 27 1 7k浏览 游戏开发数据分析场景 想免费获取内部独家PPT资料库 观看行业大牛直播 点击加入腾讯游戏学院游戏开发行业精英群711501594 摘要 大数据具
  • 怎么使用maven?

    文章目录 Maven环境搭建 创建maven项目 添加依赖 插件 添加依赖 javax servlet api 和 javax servlet jsp api 添加maven插件 运行项目 使用命令行方式运行项目 使用本地tomcat运行m
  • 【神经网络深度学习】--语义分割 Unet

    Unet 发表于 2015 年 属于 FCN 的一种变体 Unet 的初衷是为了解决生物医学图像的问题 由于效果确实很好后来也被广泛的应用在语义分割的各个方向 如卫星图像分割 工业瑕疵检测等 Unet 跟 FCN 都是 Encoder De
  • 两个无序的数组合并为一个有序的数组

    这道题很有意思 考察对于排序思想的理解 我相信大部分的人都写过两个有序链表的合并 不过前提是有序 这里是无序的 其次是链表合并指向变化 不许要开辟额外的空间就可以去做 这里不可以 因此是数组 你可以思考一下充满了挑战性 那么这道题该如何处理
  • STL之deque源码

    stl deque h 如果vector能满足你的需求 那么就使用vector 如果不得不使用deque 那么在进行一算法 尤其是sort 操作时 应该先把deque中的元素复制到vector中 执行完算法再复制回去 这样的效率往往要高于直
  • LA@0线性方程组的解摘要@记号说明

    文章目录 摘要 方程编号说明 摘要 n元线性方程组是包含n个未知量的线性方程组 它的解是一个n维向量 称为线性方程组的解向量 简称解 当线性方程组的解不唯一时 同一个 线性方程组的解向量之间具有一定关系 下面我们主要以线性方程组的向量方程形
  • 【数据分析】Pandas处理excel--导入+保存xlsx

    首先安装好pandas pip命令安装 本节案例数据表lesson4 xlsx Section 1 导入数据 用的pandas的read x 方法 x表示待导入文件的格式 导入 xlsx文件 使用read excel 文件路径 filePa
  • [渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法

    这是最近学习渗透和网站攻防的文章 希望能深入地学习这部分知识 自己作为一个初学者 前一篇文章从数据库原理解读了防止SQL注入 这篇文章通过SQLMAP工具简单介绍SQL注入及用法 自己仍在慢慢探索网络攻防和渗透 希望文章对你有所帮助 尤其是
  • 九十二.字符串算法问题(一)

    题一 判断字符串中有无重复字符 实现一个算法 确定一个字符串的所有字符是否全都不同 import java util Scanner public class LianXi public static boolean checkdiffer
  • virt-manager创建虚机需要指定的设置

    如果使用默认设置 鼠标键盘都不能用 也不能通过宿主机访问外网 所以在创建的时候 需要 好了 等到安装完毕 鼠标键盘在vnc中都能正常使用 也可以上网了
  • MATLAB读写.wav和.raw音频文件

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 wav文件格式 二 matlab代码 1 fread读 wav文件 2 fread读 raw音频文件 3 wav转raw 3 raw转wav 5 更改音频
  • String,StringBuffer,StringBuilder三者之间的联系和区别

    一 String 和 StringBuffer StringBuilder 相同点 String StringBuffer StringBuilder都是可以用来存储字符串的 不同点 1 String存储的字符串是不可变的 StringBu
  • 编译原理课设-设计一个词法分析器

    设计课设时时间紧凑 难免有些错误 文末还有完整的word可以直接下载使用 也可以直接私信我发你 文章目录 摘要 二 设计内容 一 目的 二 整体框架 三 设计类 四 项目技术 1 守卫锁lock guard C 11 2 正则表达式 C 1
  • MVC 服务端Api接口的开发

    总结上一个项目的服务器API开发的流程 附带源码下载 实现效果 存储客户端上传的订单数据到数据表 并展示到前端界面 共分为两个模块 此模块主要显示服务端如何存储数据 如何发送数据到前端界面 前后端建立的都是MVC项目 使用DTO模式传输数据
  • windows多用户远程登录工具 RDPWrap配置

    目录 准备 配置 完 准备 下载 在https github com stascorp rdpwrap releases tag v1 6 2下载RDPWrap v1 6 2 zip 下载后解压 配置 install bat右键管理员运行
  • (未解决)selenium.common.exceptions.NoSuchWindowException: Message: no such window

    执行代码如下 from selenium import webdriver from time import sleep if name main driver webdriver Chrome driver implicitly wait
  • 【1day】​万户协同办公平台 ezoffice未授权访问漏洞学习

    注 该文章来自作者日常学习笔记 请勿利用文章内的相关技术从事非法测试 如因此产生的一切不良后果与作者无关 目录
  • vue3中hooks的介绍及用法

    大家好 今天这篇文章是介绍一下vue3中的hooks以及它的用法 本文内容主要有以下两点 什么是hooks vue3中hooks的使用方法 一 什么是hooks hook是钩子的意思 看到 钩子 是不是就想到了钩子函数 事实上 hooks