码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Vue3 自定义hook函数


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

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

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

    1. import { ref, reactive, onMounted, onBeforeUnmount } from "vue";
    2. export default {
    3. name: "MyItem",
    4. setup() {
    5. let num = ref(0); // 模拟其他无关数据
    6. // 坐标点数据
    7. let point = reactive({
    8. x: 0,
    9. y: 0,
    10. });
    11. // 获取坐标点函数
    12. function getPoint(event) {
    13. point.x = event.pageX;
    14. point.y = event.pageY;
    15. }
    16. // 在生命周期函数中进行事件绑定和解绑
    17. onMounted(() => {
    18. window.addEventListener("click", getPoint);
    19. });
    20. onBeforeUnmount(() => {
    21. window.removeEventListener("click", getPoint);
    22. });
    23. return {
    24. num,
    25. point
    26. }
    27. },
    28. };

    一、创建文件夹

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

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

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

    1. import { reactive, onMounted, onBeforeUnmount } from "vue";
    2. export default () => {
    3. // 坐标点数据
    4. let point = reactive({
    5. x: 0,
    6. y: 0,
    7. });
    8. // 获取坐标点函数
    9. function getPoint(event) {
    10. point.x = event.pageX;
    11. point.y = event.pageY;
    12. }
    13. // 在生命周期函数中进行事件绑定和解绑
    14. onMounted(() => {
    15. window.addEventListener("click", getPoint);
    16. });
    17. onBeforeUnmount(() => {
    18. window.removeEventListener("click", getPoint);
    19. });
    20. return point;
    21. }

    二、使用自定义hook函数

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

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

    1. import { ref } from "vue";
    2. import usepoint from "../hooks/useopint";
    3. export default {
    4. name: "MyItem",
    5. setup() {
    6. let num = ref(0);
    7. let point = usepoint(); // 点击页面输出坐标
    8. return {
    9. num,
    10. point
    11. }
    12. },
    13. };
  • 相关阅读:
    【IoT毕设.上】STM32+机智云AIoT+实验室安全监控系统
    Uniapp如何处理后端返回图片流验证码
    数据结构和算法学习之动态规划解决背包问题
    面试总结之JVM入门
    计算机二级WPS 选择题(模拟和解析一)
    实用新型专利的特点是什么
    【C/C++笔试练习】——printf在使用%的注意事项、for循环语句的三个条件、运算符优先级、删除公共字符
    中国预制菜行业发展形势与前景规划建议报告2022-2028年版
    DAO 中存在的不足和优化方案
    Day958.代码的分层重构 -遗留系统现代化实战
  • 原文地址:https://blog.csdn.net/XunLin233/article/details/134449309
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号