详解Vue|详解Vue 自定义hook 函数
目录
- 定义
- 使用
- 封装发ajax请求的hook函数(ts版本)
定义 【详解Vue|详解Vue 自定义hook 函数】什么是hook?
- 本质是一个函数,把 setup 函数中使用的 Composition API (组合API)进行了封装
- 类似于 vue2.x 中的 mixin
- 复用代码,让 setup 中的逻辑更清楚易懂
使用 首先我们做一个功能,鼠标点击屏幕,获取坐标:
当前鼠标的坐标是:x:{{ point.x }},y:{{ point.y }}
然后改用使用 hooks,在 src 下新建 hooks 文件夹,增加 usePoint.js
import {onBeforeUnmount, onMounted, reactive} from "vue/dist/vue"; function savePoint() {let point = reactive({x: 0,y: 0})function savePoint(event) {point.x = event.pageX; point.y = event.pageY; }onMounted(() => {window.addEventListener("click",savePoint)})onBeforeUnmount(()=>{window.removeEventListener("click",savePoint)})return point}export default savePoint;
或者简写:
......export default function() {......}
在 Demo.vue 中使用:
当前鼠标的坐标是:x:{{ point.x }},y:{{ point.y }}
封装发ajax请求的hook函数(ts版本) hooks 下新建 useRequest.ts
由于用到了 axios,所以安装axios:
npm install axios
import {ref} from "vue"; import axios from "axios"; export default function(url: string) {const loading = ref(true); const data = https://www.it610.com/article/ref (null); const errorMsg = ref(''); axios.get(url).then(response => {loading.value = https://www.it610.com/article/falsedata.value = response.data}).catch(error => {loading.value = https://www.it610.com/article/falseerrorMsg.value = error.message ||'未知错误'})return {loading,data,errorMsg}}
App.vue:
加载中...
错误信息:{{errorMsg}}
- {{data.name}}
- {{data.address}}
- {{data.distance}}
- {{item.name}}
- {{item.address}}
- {{item.distance}}
测试数据有对象类型的 address.json:
{"name": "家","address": "开发区人民路22号","distance": "100km"}
还有数组类型的 addressList.json
文章图片
到此这篇关于详解Vue 自定义hook 函数的文章就介绍到这了,更多相关Vue 自定义hook 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 实例详解Java调用第三方接口方法
- netty系列之:kequeue传输协议详解
- HarmonyOS - ArkUI(JS)之list自定义地区组件
- Vue常见面试题
- 数字化转型之数字资产知识库(springboot+es+vue+neo4j)
- Vue|Vue核心?(生命周期)
- Vue|Vue中的过滤器
- Vue|Vue核心?(内置指令)
- WEB|我的VUE 学习之路(下)
- Vue|Vue实现复制粘贴功能