当前位置:   article > 正文

vue3中hooks用法详解_vue3hooks使用场景

vue3hooks使用场景

1、什么是hooks

hook是钩子的意思,看到“钩子”是不是就想到了钩子函数?事实上,hooks 还真是函数的一种写法。

vue3 借鉴 react hooks 开发出了 Composition API ,所以也就意味着 Composition API 也能进行自定义封装 hooks

vue3 中的 hooks 就是函数的一种写法,就是将文件的一些单独功能的js代码进行抽离出来,放到单独的js文件中,或者说是一些可以复用的公共方法/功能。其实 hooksvue2 中的 mixin 有点类似,但是相对 mixins 而言, hooks 更清楚复用功能代码的来源, 更清晰易懂。

2、hooks基本用法

  1. src中创建一个hooks文件夹,用来存放hook文件;
  2. hooks文件下创建useCount.js文件(一般使用use开头);
import { ref } from 'vue'
export default function() {
	const count=ref(0);
	const increment = () => {
		count.value++;
	}
	const decrement = () => {
		count.value--;   
	}
	// 把方法和数据返回出去
	return {
	    count,
	    increment,
	    decrement
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  1. 在用到的文件中引入useCount.js
<script setup>
	//引入hooks文件
	import useCount from "../hooks/useCount"
	// 导入
	const { count, increment, decrement } = useCount()

</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3、hooks复杂场景应用

在实际应用中,自定义hooks的使用会比我们上面的示例复杂一些,常见的使用场景包括处理网络请求和状态管理。前面我们也提到了,为了更好的进行代码维护,我们为Hooks代码片段单独创建了一hooks文件夹,在Vue3中,为了更好的维护应用程序的状态,官方也推荐我们尽可能地把状态和逻辑分离到单一的切面中,单独组织出一个hooks文件,存放整个应用或某个模块中可以重用的业务逻辑。

下面我们再来实现一个注册特定的原生事件的Hooks

比如要实现一个功能就是在 点击页面时,记录鼠标当前的位置,可以在hooks文件夹中新建一个文件useMousePosition.js,并编写下面代码:

// src/hooks/useMousePosition.ts
import { ref, onMounted, onUnmounted, Ref } from 'vue'

interface MousePosition {
	x: Ref<number>,
	y: Ref<number>
}
export default function () {
	const x = ref(0)
	const y = ref(0)

	const updateMouse = (e) => {
		x.value = e.pageX
		y.value = e.pageY
	}

	onMounted(() => {
		document.addEventListener('click', updateMouse)
	})

	onUnmounted(() => {
		document.removeEventListener('click', updateMouse)
	})
  //把方法和数据返回出去
  return {
	  x, 
	  y 
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

在需要用到该hook功能的组件中进行使用。

<template>
  <div>
    <p>X: {{ x }}</p>
    <p>Y: {{ y }}</p>
  </div>
</template>

<script setup>
// 引入hooks
import useMousePosition from '../hooks/useMousePosition'

// 使用hooks功能
const { x, y } = useMousePosition()

</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

以上就是vue3中hooks的基本使用,希望对您有所帮助,感谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/190921
推荐阅读
相关标签
  

闽ICP备14008679号