Vue3自定义hooks

386 阅读1分钟

什么是hook

自定义hook函数其实本质就是一个函数,把setup函数中使用的composition API(组合式 API)进行封装,这就类似Vue2中的mixin。

自定义hook的优势:代码复用,使setup中的逻辑更清晰易懂。

创建一个自定义hook

我们创建一个自定义hook函数,并演示它的使用方法。

1.新建一个项目,在src文件夹下新建hooks文件夹

image.png

2.在hooks文件夹下创建useCount.ts文件,在文件中写入演示代码

import { ref } from 'vue'

export const useCount = () => {
  const a = ref<number>(0)

  const add = () => a.value++

  const sub = () => a.value--

  return { a, add, sub }
}

在开头我们就说过,hook函数其实本质就是一个函数,所以我们在这里导出useCount函数,通常情况下hook函数都是以use开头的。在这个函数里面,定义了一个变量a,自增函数add,自减函数sub,并将它们返回。

使用自定义hook

在components文件夹下新建Demo.vue组件,并在App.vue中使用,在Demo组件中写入如下演示代码

<template>
  <div>{{ a }}</div>
  <button @click="add">add</button>
  <button @click="sub">sub</button>
</template>

<script setup lang="ts">
import { useCount } from '../hooks/useCount'
const { a, add, sub } = useCount()
</script>

<style></style>

首先导入自定义的useCount hook函数,因为这个函数返回了a, add, sub,所以通过结构的方式将他们取出。在html结构中,通过div将a的值展示,并通过两个按钮来控制自增自减。

image.png

当点击add时,a的数值增加

image.png

点击sub时,a的数值减小

image.png

这就是一个非常简单的自定义hook函数,通过这个加减的例子或许对你理解会有些许帮助。