Vue3 自定义hook函数

这个hook函数并不是Vue3 自带的,而是为了方便我们书写和复用代码。

当我们在setup函数中写了很多内容过后,就会变得很乱,所以我们将实现相同功能的数据、方法和生命周期等等打包单独放在一个文件中,就会整洁很多。

例如:我们有一段代码,实现的是点击页面获取当前点击的位置并展示。

import { ref, reactive, onMounted, onBeforeUnmount } from "vue";

export default {
  name: "MyItem",
  setup() {
    let num = ref(0);  // 模拟其他无关数据
    // 坐标点数据
    let point = reactive({
      x: 0,
      y: 0,
    });

    // 获取坐标点函数
    function getPoint(event) {
      point.x = event.pageX;
      point.y = event.pageY;
    }

    // 在生命周期函数中进行事件绑定和解绑
    onMounted(() => {
      window.addEventListener("click", getPoint);
    });
    onBeforeUnmount(() => {
      window.removeEventListener("click", getPoint);
    });
    return {
      num,
      point
    }
  },
};

一、创建文件夹

我们将整理的内容整理在和components 文件夹平级的hooks 文件夹下,文件夹下的js文件我们使用通常 usexxx.js 来命名。

然后我们将和点击获取坐标的相关代码放入该文件中,并整理为函数进行暴露,函数中要返回最终的需要使用的数据。

注意:这里需要引入相关的composition API 

import { reactive, onMounted, onBeforeUnmount } from "vue";

export default () => {
    // 坐标点数据
    let point = reactive({
        x: 0,
        y: 0,
    });

    // 获取坐标点函数
    function getPoint(event) {
        point.x = event.pageX;
        point.y = event.pageY;
    }

    // 在生命周期函数中进行事件绑定和解绑
    onMounted(() => {
        window.addEventListener("click", getPoint);
    });
    onBeforeUnmount(() => {
        window.removeEventListener("click", getPoint);
    });
    return point;
}

二、使用自定义hook函数

我们将usepoint.js 文件编写完成后,需要在组件中进行引入和使用。

直接使用一个变量接收函数的返回值,然后return 出去即可。

import { ref } from "vue";
import usepoint from "../hooks/useopint";

export default {
  name: "MyItem",
  setup() {
    let num = ref(0);
    let point = usepoint();  // 点击页面输出坐标

    return {
      num,
      point
    }
  },
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux友人帐之网络编程基础邮件服务器与DHCP服务器

一、邮件服务器概述 1.1邮件服务基础 邮件服务器是一种计算机程序,它通过电子邮件协议接收、存储、处理和发送电子邮件。邮件服务器可以与电子邮件客户端程序(如Outlook、Thunderbird等)或Web邮件界面(如Gmail、Outlook.com等&am…

操作系统OS/存储管理/内存管理/内存管理的主要功能_基本原理_要求

基本概念 内存管理的主要功能/基本原理/要求 **内存管理的主要功能: ** 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。地址转换。在多道程序环境下,程序中的逻辑地…

数字档案室建设评价

数字档案室建设评价应考虑以下几个方面: 1. 安全性:数字档案室的主要目的是确保档案资料的安全性。评价应考虑数字档案室的物理安全性、防火措施、保密措施、网络安全等方面。 2. 可访问性:数字档案室应该易于访问和使用。评价应考虑数字档案…

OCC教学:预备基础

预备基础:1.概览 什么是Open CASCADE Technology? Open CASCADE Technology (OCCT) 是一个功能强大的开源 C 库,由数千个类组 成,并提供以下领域的解决方案: 表面和实体建模:对任何对象进行建模。3D 和 …

制造业数据标准化的优势分析

之前我们介绍过>>数据驱动工作效率提升的5个层次——以PreMaint设备数字化平台为例,这次我们将深入分析数据标准化在制造业中的优势。 从持续的供应链中断和疯狂的通货膨胀,到日益昂贵和难以采购的原材料,制造企业正面对越来越多的挑战…

APM/PX4/betaflight/inav开源飞控之IMU方向

APM/PX4/betaflight/inav开源飞控之IMU方向 1. 源由2. 坐标系2.1 APM/PX4:机体坐标 右手系规则2.2 betaflight/inav:xEast-yNorth-zUp yaw反向 右手系规则 3. 转向定义3.1 APM/PX43.2 betaflight/inav 4. 实例4.1 I C M 42688 P ICM42688P ICM42688P…

把jar包打到本地仓库然后上传到私服

1.首先把需要打成maven的包放到本地 2.然后本地配置maven的环境变量 没有配置的话可以看看下面这个,教程很详细 Windows系统配置maven环境_windows配置maven环境变量-CSDN博客 3.WinR cmd 输入如下的指令: mvn install:install-file -Dfile.\device…

unity shaderGraph实例-扫描效果

文章目录 效果展示整体结构各区域内容区域1区域2区域3区域4区域5区域6GraphSetttings注意事项使用方法 效果展示 整体结构 各区域内容 区域1 用场景深度减去顶点的View空间的视野深度(Z值),这里Z值需要乘-1是因为从相机看到的物体顶点的视野…

Kontakt Factory Library 2(Kontakt原厂音色库2)

Kontakt Factory Library 2是一款由Native Instruments开发的音乐采样库。它是Kontakt采样器软件的官方库之一,提供了丰富的音色和音乐资源,可用于制作各种类型的音乐。 Kontakt Factory Library 2包含了数千个高质量的乐器采样,涵盖了各种乐…

不会英语能学编程吗?0基础学编程什么软件好?

不会英语能学编程吗?0基础学编程什么软件好? 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件,象如图这个…

【数据分享】1961—2022年全国范围的逐日降水栅格数据

降水数据是我们在各项研究中最常用的气象指标之一!之前我们给大家分享过来源于国家青藏高原科学数据中心发布的1901-2022年1km分辨率逐月降水栅格数据以及1901-2022年1km分辨率逐年降水栅格数据(均可戳我跳转)!很多小伙伴拿到数据…

OpenCV基础应用(4)— 如何改变图像的透明度

前言:Hello大家好,我是小哥谈。本节课就手把手教你如何改变图像的透明度,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍 改变图像透明度的实…

Linux C 线程间同步机制

线程间同步机制 概述保护机制互斥锁创建互斥锁  pthread_mutex_init加锁  pthread_mutex_lock解锁  pthread_mutex_unlock删除锁  pthread_mutex_destroy 条件变量创建条件变量  pthread_cond_init激活条件变量  pthread_cond_signal等待条件变量  pthread_cond_…

媒体行业的3D建模:在影视中创造特效纹理

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 在本文中,我们将探讨 3D 建模在媒体行业中的作用,特别是它在影视特效创作…

某60工业互联网安全测试技术学习记录

系列文章目录 文章目录 系列文章目录前言工业互联网安全测试技术安全工具分类常用安全工具介绍 主机安全测试5.1 主机安全测试概览5.2 通用主机安全测试技术主机信息扫描 5.3 Linux主机安全测试5.4 Android 安全测试5.5 Windows主机安全测试5.6 UNIX 主机安全测试 工业渗透测试…

COS对象存储

一. 什么是对象存储 腾讯云叫COS,在阿里云叫OSS,是一样的对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、可靠安全等优点。通过控制台、API、…

【深度学习】吴恩达课程笔记(五)——超参数调试、batch norm、Softmax 回归

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【吴恩达课程笔记专栏】 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础 【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络 【深度学习】吴恩达课程笔记(三)——参数VS超参数、深度…

开源短剧付费变现小程序源码系统+在线开通会员+在线充值 带完整的搭建教程

说起微短剧,相信大家都不会陌生。相比传统网剧冗长的剧情,微短剧最大的看点,是时长短、高浓缩,顺应了当下用户娱乐时间碎片化趋势。其故事题材多为赘婿、霸道总裁、穿越、重生等看似夸张、无厘头,但却非常“上头”的虚…

PyTorch:GPU的使用

在深度学习领域,神经网络模型训练所需的计算量巨大,这就对计算资源提出了高要求。为了处理这一问题,图形处理器(GPU)被引入到深度学习中,其并行计算能力可以极大加速神经网络的训练过程。PyTorch作为一款出…

什么是脏读、不可重复读、幻读讲解

数据库隔离级别是数据库管理系统中一个重要的概念,它定义了事务之间的可见性和影响。在多用户并发访问数据库时,隔离级别能够确保事务之间的相互独立性,避免数据不一致的问题。本文将深入探讨三种常见的并发问题:脏读、不可重复读…