当前位置: 首页 > article >正文

vue3的自定义hooks怎么写?

写个hook函数去追踪鼠标位置:

没用hook前:

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'

const x = ref(0)
const y = ref(0)

function update(event) {
  x.value = event.pageX
  y.value = event.pageY
}

onMounted(() => window.addEventListener('mousemove', update))
onUnmounted(() => window.removeEventListener('mousemove', update))
</script>

<template>Mouse position is at: {{ x }}, {{ y }}</template>

用hook后:

//主页面:

<template>Mouse position is at: {{ x }}, {{ y }}</template>

<script setup>
import { useMouse } from './mouse.js'

const { x, y } = useMouse()
</script>




在同一目录下新建mouse.js文件,在文件内写入以下内容:

// mouse.js
import { ref, onMounted, onUnmounted } from 'vue'

// 按照惯例,组合式函数名以“use”开头
export function useMouse() {
  // 被组合式函数封装和管理的状态
  const x = ref(0)
  const y = ref(0)

  // 组合式函数可以随时更改其状态。
  function update(event) {
    x.value = event.pageX
    y.value = event.pageY
  }

  // 一个组合式函数也可以挂靠在所属组件的生命周期上
  // 来启动和卸载副作用
  onMounted(() => window.addEventListener('mousemove', update))
  onUnmounted(() => window.removeEventListener('mousemove', update))

  // 通过返回值暴露所管理的状态
  return { x, y }
}



http://www.kler.cn/a/389207.html

相关文章:

  • ctfshow-web入门-SSTI(web361-web368)上
  • 基于迭代重加权最小二乘法的算法及例程
  • 使用Matlab建立随机森林
  • 【再谈设计模式】抽象工厂模式~对象创建的统筹者
  • [CKS] 关闭API凭据自动挂载
  • Gsensor加速度传感器数据异常及概率性卡死
  • 《深入浅出Apache Spark》系列③:Spark SQL解析层优化策略与案例解析
  • Redis的缓存问题与应对策略
  • 面试:TCP、UDP如何解决丢包问题
  • 探索开放资源上指令微调语言模型的现状
  • 【Kafka-go】golang的kafka应用
  • ReactPress:深入解析技术方案设计与源码
  • C++学习笔记----10、模块、头文件及各种主题(六)---- C风格可变长度参数列表
  • qt QRunnable 与 QThreadPool详解
  • 【CSS】居中样式
  • Nginx性能调优的具体策略方法
  • opcua认证测试1108 增加对三菱,西门子,modbus支持
  • PySindy学习
  • 无人机避障——(局部规划方法)DWA(动态窗口法)
  • C#开发流程
  • 1.1 算法基本概念与复杂度分析
  • qt QWebSocketServer详解
  • 第十三届交通运输研究(上海)论坛┆智能网联汽车技术现状与研究实践
  • SpringBoot项目编译报错 类文件具有错误的版本 61.0, 应为 52.0
  • ssh2-sftp-client一键将你的前端项目部署到远程服务器,你只需要专注写bug就好了
  • Rust:GUI 开源框架