Vue3中hook的使用及使用中遇到的坑

news2025/1/8 5:48:00

目录

  • 前言
  • 一,什么是hook
  • 二, hook函数的使用
    • 2.1 铺垫
    • 2.2 hook函数的写法
    • 2.3 使用写好的hook函数
  • 后记

前言

在学习Es6的时候,我们开始使用类与对象,开始模块化管理;在Vue中我们可以使用mixin进行模块化管理;Vue3中同样存在模块化管理,需要使用到hook函数。

本节博客就针对Vue3中的hook函数进行讲解,在讲解中会穿插hook使用中遇到的坑和需要注意的东西。(标黄部分)

一,什么是hook

hook的本质是一个函数,把setup函数中使用的composition Api进行了封装,类似于Vue2中的mixin。

二, hook函数的使用

2.1 铺垫

我们先来写一段很简单的代码:

<template>
  <div>我是App组件</div>
  <div>sum的值为{{ sum }}</div>
  <button @click="add">点击sum的值加1</button>
</template>

<script>
import {ref} from 'vue'
export default {
    name: 'App',
    setup() {
        let sum = ref(0)
        function add() {
            sum.value ++
        }

        return {sum, add}
    }
}
</script>

<style>

</style>

上面的代码简单的用ref定义了一个sum,并且设置了一个按钮,如若点击则sum值可加一。
在这里插入图片描述
如果现在,有五个组件都要实现类似的功能,想请问大家,是不是要把这段代码复制粘贴五次呢?

其实不用,了解模块化管理的读者可以猜到,Vue3中也可以实现,代码只写一次,需要时复用的功能——hook函数。

且看hook函数的讲解。

2.2 hook函数的写法

很简单,首先我们创建一个名为hooks的文件夹,内部创建一个js文件,js文件名可以根据功能来取:
在这里插入图片描述
把我们刚刚写的关于sum的部分粘贴到这个js文件中:
在这里插入图片描述

接着,我们把这些内容放到一个函数中并暴露出去,注意:ref是需要引用才能使用的,在js文件中依旧需要引入。
在这里插入图片描述

别忘了把需要用到的东西return出去:
在这里插入图片描述

以上,文件就已经写好了。

2.3 使用写好的hook函数

接下来我们要在App.vue中使用刚刚写好的addSum模块。

一共有三个步骤:引用、接收、暴露。

首先,引用:在App.vue组件中import:
在这里插入图片描述
其次,接收,这里特别容易出错!!
这里我需要强调几点:首先,let后面定义的东西不能与addSum同名,这是个大坑,会报错。其次就是,最好像我下面这样解构一下。不然你用的时候只能像别的案例一样只获取一个值。
在这里插入图片描述
最后,别忘记把我们接收到的sum,add返回出去。
在这里插入图片描述

后记

本篇博客中遇见的问题笔者花了很久才解决。如果还有什么问题可以在评论区里面发表。

欢迎关注,期待跟您带来更好的文章。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-03-03干活小计

今天见识了 归一化的重要性&#xff1a;归一化 不容易爆炸 深度了解了学习率&#xff1a;其实很多操作 最后的结果都是改变了lr 以房价预测为例&#xff1a;一个点一个点更新 比较 矩阵的更新&#xff1a; 为什么小批量梯度下降 优于随机梯度下降 优于批量梯度下降&#xff…

Kubernetes 中 Deployment 使用

Deployment的使用 之前我们了解了Replication Controller和Replica Set两种资源对象&#xff0c;RC和RS的功能基本上是差不多的&#xff0c;唯一的区别就是RS支持集合的selector。也了解到了用RC/RS来控制Pod副本的数量&#xff0c;也实现了滚动升级Pod的功能。现在看上去似乎…

【面试题】前端路由分类

0. 前言 在Web开发中&#xff0c;路由是指根据用户请求的URL地址&#xff0c;确定用户访问的页面资源、参数等&#xff0c;是前端开发中不可缺少的重要部分。Vue router中提供了两种路由模式&#xff0c;一种是hash模式&#xff0c;另一种是history模式。 1. Hash模式路由 H…

爆款升级!新系列南卡Neo最强旗舰杀到,业内首款无线充骨传导耳机!

中国专业骨传导耳机品牌NANK南卡于近日发布了全新南卡Neo骨传导运动耳机&#xff0c;打造一款佩戴最舒适、音质体验最好的骨传导耳机。推出第2代声学響科技技术&#xff0c;提供更优质的开放式骨传导听音体验&#xff0c;透过不一样的音质体验&#xff0c;打造更好的骨传导耳机…

MySQL基础(二)排序与分页、多表查询、单行函数

上接 MySQL基础&#xff08;一&#xff09;SQL分类、导入、SELECT语句&#xff0c;运算符_独憩的博客-CSDN博客 目录 排序与分页 排序 二级排序 分页 多表查询 基础多表查询 等值连接vs非等值连接 自连接vs非自连接 内连接vs外连接 自然连接 单行函数 数值函数 …

信息系统基本知识(四)新技术

大纲 信息系统与信息化信息系统开发方法常规信息系统集成技术软件工程新一代信息技术信息系统安全技术信息化发展与应用信息系统服务管理信息系统服务规划企业首席信息管及其责任 1.5 新一代技术 1.5.1 物联网 概念&#xff1a;&#xff08;The Internet of Things&#xf…

你只会说MVC模型是什么但是不会实现?今天带你走通Web、Servlet、MVC、SpringMVC。代码演示很清晰

文章目录HTTP请求和HTTP响应从0手写一个Web服务器&#xff0c;看看能有多累人使用Servlet实现一个服务器&#xff0c;看看多简单Serlvet的创建Servlet的运行Servlet的其他问题Servlet这么爽&#xff0c;我们简单地探索一下它的原理JSP跟Servlet合作啦&#xff0c;我们来看一下他…

学习ROS时针对gazebo相关的问题(重装与卸载是永远的神)

ResourceNotFound:gazebo_ros 错误解决 参考:https://blog.csdn.net/weixin_42591529/article/details/123869969 当将机器人加载到gazebo时,运行launch文件出现如下错误 这是由于缺少gazebo包所导致的。 解决办法:

Linux 学习 挂载、卸载光盘和实现虚拟机时间同步

/media&#xff1a;挂载光盘使用的 挂载光盘命令&#xff1a;mount /dev/cdrom /media 卸载光盘命令&#xff1a;umount /dev/cdrom 挂载光盘 使用挂在光盘命令挂载光盘&#xff0c;如图所示 卸载光盘 初次卸载光盘可能会出现问题 [rootlocalhost media]# umount /dev/cd…

linux定时任务打包提权docker组提权

定时任务有打包命令&#xff0c;这个命令有参数调用可以执行其他命令&#xff0c;定时任务因为是root用户执行的&#xff0c;所以就会造成提权。一、linux定时任务打包提权复现环境&#xff1a;ubuntun14.041.创建定时任务&#xff1a;在最下面写入&#xff1a;* * * * * …

CK-GW208-EIP与汇川5UPLC走EtherNET_IP通讯指南

CK-GW208-EIP是一款支持标准工业Ethernet/IP协议的IO-LINK主站网关&#xff0c;方便用户快速便捷的集成到PLC等控制系统中。CK-GW208-EIP主站网关集成8路IO-LINK通信端口&#xff0c;采用即插即用模式&#xff0c;无需繁琐的配置&#xff0c;减轻现场安装调试的工作量。为了满足…

几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)

几何算法——6.曲线曲面求交的方法总结&#xff08;国内外文献调研、思考和总结&#xff09;1 曲线曲线1.1 直线/二次曲线1.2 二次曲线/二次曲线1.3 其他类型2 曲线曲面2.1 直线/二次曲面&#xff0c;二次曲线/平面2.2 二次曲线/二次曲面2.3 其他类型3 曲面曲面3.1 平面/二次曲…

文件传输协议的五种安全文件传输替代方案

对安全文件传输协议的需求,过去&#xff0c;文件传输协议&#xff08;FTP&#xff09;是发送文件的常用协议。这是一个更简单的时期&#xff0c;安全性比今天要少得多。 但是随着黑客变得越来越复杂&#xff0c;他们发现FTP缺乏安全性。他们知道FTP可以通过有限的方式来确保访…

【IoT】压力式电子脉搏器设计

脉搏是指单位时间内心脏跳动的次数,一般指每分钟的心跳次数,它是衡量人体健康指数的重要指标之一。然而&#xff0c;传统的诊脉手段受到人为因素影响较多&#xff0c;在一定程度上降低了判断病情的准确性&#xff0c;随着电子科学技术的迅猛发展&#xff0c;就出现了电子脉搏计…

# 技术详解: 利用CI同步文章以及多端发布

技术详解: 利用CI同步文章以及多端发布 技术详解: 利用CI同步文章以及多端发布 前言文章的同步实现的细节 思路文章元数据的定义和提取修改文章的优化本地图片资源上传CDN并替换本地link 终于到了 CI 的部分了最后来一些碎碎念 前言 前几天我更新了一篇简单技术总结之后&am…

用C语言写一个自己的shell-Part Ⅲ--built-in commands

Part Ⅲ–Built-in commands Just as we have mentioned in part Ⅱ&#xff0c;the exec family of functions can’t perform built-in commands like cd. It’s like The reason for this is that cd is not a system command like ls or pwd.We need to write and inv…

云原生下最火的API网关-APISIX

文章目录一、APISIX是什么&#xff1f;二、APISIX有哪些功能&#xff1f;三、APISIX对比Spring Cloud Gateway、Zuul等其他网关有哪些优势&#xff1f;四、从0到1部署APIXSIX步骤1&#xff1a;准备环境步骤2&#xff1a;安装依赖步骤3&#xff1a;安装APISIX步骤4&#xff1a;配…

成都待慕电商:抖音虚假宣传虚构被比较价格违规细则

为了保护抖音消费者权益&#xff0c;规范创作者商品分享推广秩序&#xff0c;抖音平台制定《「虚假宣传-虚构被比较价格」违规细则》。 来看详细内容&#xff1a;一、什么是“被比较价格”&#xff1f;被比较价格&#xff1a;指创作者通过价格比较的方式宣传商品价格优惠时&…

opencv:运用cv2给视频加水印

前一段时间学了一下计算机视觉的相关知识,今天想了想,觉得可以利用cv2这个模块给视频加上水印,这样从一些方面也可以表明这个视频的原创。 1. 实现原理 小编的实现原理就是使用cv2模块读取视频文件,然后获取到每一张图片,在图片上的相应位置写上相应的字符串(小编最初打算…

MR虚拟直播是什么?

阿酷tony / 2023-3-3 / 长沙MR虚拟直播是通过机器人、虚拟人物、虚拟舞台或虚拟现实技术&#xff0c;将主播和场景实时转化的互动直播方式。MR技术&#xff08;混合现实技术&#xff09;结合大数据、人工智能等技术&#xff0c;可以在虚拟直播中实现更多的自由度和互动性&#…