如何在Vue3中使用Hooks
在Vue的options Api时代,mixins是我们抽离一个功能的重要手段,而在使用composition Api的Vue3时代,我们可以用hooks来实现类似mixins的功能。
相比mixins,hooks更清楚复用功能代码的来源, 更清晰易懂。
下面来了解一下hooks的用法~~
首先,在src中创建一个hooks文件夹,来统一管理项目中的hooks功能
在hooks文件夹中新建一个文件useMousePosition.ts,这个hooks实现的功能是点击页面时,记录鼠标当前的位置
// 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.pageXy.value = e.pageY}onMounted(() => {document.addEventListener('click', updateMouse)})onUnmounted(() => {document.removeEventListener('click', updateMouse)})return { x, y }
}export default useMousePosition
最后,我们在需要用到该hooks的组件中引入使用
<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的使用,是不是觉得特别的简单清晰
如何在Vue3中使用Hooks相关推荐
- 如何在Vue3中使用router
如何在Vue3中使用router //在vue的js或ts文件中引入vue-router的方法 import {createWebHashHistory,createRouter} from 'vue ...
- 中input怎么接受后台传值_[vue3]如何在vue3中优雅地使用vmodel?
Vue中的数据绑定 绑定数据有三种方式: 插值,也就是{{name}}的形式,以文本的形式和实例data中对应的属性进行绑定 v-bind v-model v-bind eg:v-bind:class ...
- 如何在vue3中优雅地使用v-model?
文章目录 ps:vue3中推荐使用的是reactive写法,文中这种格式只是为了和vue2做对照,只是为了凸显vue3中对v-model的改进,仅供参考. Vue中的数据绑定 v-bind v-bin ...
- Vue--》如何在Vue3中书写TSX
在vue2的时候就已经可以使用 jsx 语法,但是不是很友好,写起来是一件很痛苦的事情,所以你很少见到有人会在vue2中书写 jsx 语法,官方也不建议我们在vue2中进行书写 jsx 的代码风格: ...
- Vue3 中使用 AudioWorklet 获取麦克风音量
Vue3 中使用 AudioWorklet 获取麦克风音量 最近公司在开发音视频项目,其中有个功能是用户监测麦克风讲话是否有波动:于是从各种技术网站想找关于Vue3的示例项目想着借鉴一番,但是功夫不负 ...
- 如何在React中使用功能组件
Have you wondered how to create a component in React? 您是否想过如何在React中创建组件? To answer, it is as simple ...
- 如何在Mongoose中更新/更新文档?
本文翻译自:How do I update/upsert a document in Mongoose? Perhaps it's the time, perhaps it's me drowning ...
- 在vue3中使用jsx语法
背景 vue3项目中 推进使用composition-api + setup 形式 配合jsx+hooks形式,按业务分离,逻辑更清晰,维护更方便: 语法 下面主要通过对比jsx和template不同 ...
- Vue3 生命周期Hooks函数与调度器Scheduler的原理
大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 写在最前:本文章的目标 Vue3的生命周期的实现原理是比较简单的,但要理解整个Vue3的生命 ...
最新文章
- 记录一次生产环境下的jvm内存泄露问题和分析解决过程!
- 大数据遇上大型机 结果会如何?
- 子域名查询DNS记录查询
- 通过超链接访问后台方法_超有用的公众号超链接,3分钟学会2种超链接方法,特别实用!...
- 关于JWT(Json Web Token)的思考及使用心得
- ubuntu18.04升级cmake
- 赛锐信息-AMS系列产品简介
- Enterprise Library:DAAB + OLEDB/ODBC操作Access数据库
- 语音识别系统市场前景及发展趋势
- LINUX信息命令查看大全
- sql prompt linux,SQL PROMPT的设置
- 5个聚合导航网站,资源、工具、素材应有尽有
- 记第三期“晋IT”分享成长沙龙
- 数字图像处理:实验八 遥感图像增强
- 企业的核心价值观应该建立在哪些要素上??
- c语言iq测试,IQ智商测试题
- java陆小凤的游戏_《陆小凤传奇》游戏流程、经验心得
- 我终于把Boss直聘上热度最高的Java面试八股文总结,渗透面试核心知识点!
- 需求文档 | 产品需求文档(PRD)
- 选择启动虚拟机后,出现不能为虚拟电脑打开一个新任务的报错