Vue3项目中的hooks的使用教程

 更新时间:2022年08月01日 11:37:01   作者:ed。  
今天我们稍微说一下 vue3 项目中的 hooks 的使用,其实这个 hooks 呢是和 vue2 当中的 mixin 是类似的,学习过 vue2 的小伙伴一定对 mixin 一定比较熟悉,快跟随小编一起来学习学习吧

今天我们稍微说一下 vue3 项目中的 hooks 的使用,其实这个 hooks 呢是和 vue2 当中的 mixin 是类似的,学习过 vue2 的小伙伴一定对 mixin 一定比较熟悉,就算没用过也一定了解过,也就是混入,通过 mixin 混入来分发 vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。而 vue2 的 hooks 函数与 mixin 混入的区别,主要是 hooks 是函数。

hooks 特点

vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入,不同在于 hooks 是函数。

vue3 中的 hooks 函数可以提高代码的复用性,能够在不同的组件当中都利用 hooks 函数。

hooks 函数可以与 mixin 连用,但是不建议。

hooks 基本使用

首先我们不管 hooks 哈,我们先写一个小功能,就是获取页面的宽高值,这个是讲解 hooks 的常用案例了,都是老演员了,我们也来整一个。

我不啰嗦了,直接写代码吧。

<template>
  <h3>hooks</h3>

  <p>页面宽度: {{screen.width}}</p>
  <p>页面高度: {{screen.height}}</p>

  <el-button @click="getWH">获取页面的宽高</el-button>
</template>
<script setup>
  import { reactive } from 'vue'

  const screen = reactive({
    width: 0,
    height: 0
  })

  const getWH = () => {
    screen.width = document.documentElement.clientWidth
    screen.height = document.documentElement.clientHeight
  }

</script>
<style scoped>

</style>

上面的代码其实很简单了就,有两个标签,显示可视页面的长度和宽度,然后有一个按钮获取最新的长宽进行显示。

这个功能是可以顺利实现的哈。如果我们需要在另一个页面也想实现这个功能的话,也很简单,在直接把上面的代码复制一下到另一个需要实现的页面就可以了。

但是

有没有发现一个问题,就是一个页面需要就复制一遍,一个页面需要就复制一遍,如果有一百个页面就复制一百遍,代码一两行还好,如果是一个超级庞大的工具类,那么在像这样实现的话,是不是就过于复杂了,而且还不好实现,那这个问题怎么解决呢?啊哈哈哈哈,没错了宝子们,就是 hooks 。

我们针对上面的案例,我们使用 hooks 简单的实现一下。

首先,我们在 src 文件夹下创建一个 hooks 文件夹。

在 hooks 文件夹下创建一个文件,名字就叫做 useScreenWh.js 文件

接下来就很简单了,我们把获取可视化界面的代码放进这个 js 文件,然后导出去,给其他页面使用就可以了。

import { reactive } from 'vue'

export default function () {  // 导出一个默认方法

  // 创建一个对象,保存宽度和高度值
  const screen = reactive({
    width: 0,
    height: 0
  })

  // 创建一个方法,获取可视化界面的宽度和高度值
  const getWH = () => {
    screen.width = document.documentElement.clientWidth
    screen.height = document.documentElement.clientHeight
  }

  return { screen, getWH }  // 方法返回宽高值
}

然后在需要使用 hooks 的文件引入就可以使用了。

<template>
  <h3>hooks</h3>

  <p>页面宽度: {{screen.width}}</p>
  <p>页面高度: {{screen.height}}</p>

  <el-button @click="getWH">获取页面的宽高</el-button>

</template>
<script setup lang="ts">

  // 导入 hooks 
  import screenWH from '../hooks/useScreenWh.js'

  // 因为 screenWH 是一个导出的方法,所以需要调用一下子,然后顺便解构一下就可以在模板使用了。
  let { screen, getWH } = screenWH()

</script>
<style scoped>

</style>

好了,我们保存看一下效果。

和之前是完全一样的。

到此这篇关于Vue3项目中的hooks的使用教程的文章就介绍到这了,更多相关Vue3 hooks内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue组件为什么data必须是一个函数

    Vue组件为什么data必须是一个函数

    这篇文章主要介绍了Vue组件为什么data必须是一个函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Vue 服务端渲染SSR示例详解

    Vue 服务端渲染SSR示例详解

    这篇文章主要介绍了Vue 服务端渲染SSR示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • KKFileView结合vue多格式文件在线预览功能实现

    KKFileView结合vue多格式文件在线预览功能实现

    kkFileView是git的开源在线文件预览项目,这篇文章主要介绍了KKFileView结合vue多格式文件在线预览功能,本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • vue-cli-service不是内部或外部命令,也不是可运行的程序或批处理文件问题

    vue-cli-service不是内部或外部命令,也不是可运行的程序或批处理文件问题

    在Vue项目构建过程中,如果遇到无法识别'vue-cli-service'命令的错误提示,通常是因为没有全局安装vue-cli,解决这个问题的步骤主要包括:首先检查Vue版本,如果未安装则先安装Vue;其次全局安装vue-cli;若在安装过程中遇到cnpm命令找不到的情况
    2024-10-10
  • 浅谈vue3在项目中的逻辑抽离和字段显示

    浅谈vue3在项目中的逻辑抽离和字段显示

    本文主要介绍了vue3在项目中的逻辑抽离和字段显示,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 前端Vue3引入高德地图并展示行驶轨迹动画的步骤

    前端Vue3引入高德地图并展示行驶轨迹动画的步骤

    最近在Vue项目中引入高德地图,实现地图展示与交互的方法和技术,这里跟大家分享下,这篇文章主要给大家介绍了关于前端Vue3引入高德地图并展示行驶轨迹动画的相关资料,需要的朋友可以参考下
    2024-09-09
  • vue中Element-ui 输入银行账号每四位加一个空格的实现代码

    vue中Element-ui 输入银行账号每四位加一个空格的实现代码

    我们在输入银行账号会设置每四位添加一个空格,输入金额,每三位添加一个空格。那么,在vue,element-ui 组件中,如何实现呢?下面小编给大家带来了vue中Element-ui 输入银行账号每四位加一个空格的实现代码,感兴趣的朋友一起看看吧
    2018-09-09
  • vue组件打包并发布到npm的全过程

    vue组件打包并发布到npm的全过程

    这篇文章主要介绍了vue组件打包并发布到npm的全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • laravel+vue组合的项目中引入ueditor方式(打包成组件形式)

    laravel+vue组合的项目中引入ueditor方式(打包成组件形式)

    今天小编就为大家分享一篇laravel+vue组合的项目中引入ueditor方式(打包成组件形式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue实现全局异常处理的几种方案

    Vue实现全局异常处理的几种方案

    本文主要介绍了使用pyscript在网页中撰写Python程式的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05

最新评论