vue3:详解组合式函数

Vue3的组合式API允许开发者封装和复用有状态的逻辑,如跟踪鼠标位置。它不同于普通函数,能处理响应式状态并在组件生命周期中管理副作用。这种模式类似于React的Hooks,提高了代码的可复用性和组织性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。

作用

复用公共任务的逻辑。推荐在纯逻辑复用时使用组合式函数,在需要同时复用逻辑和视图布局时使用无渲染组件。

和普通函数的区别

一般普通函数我们在封装函数的时候,都是封装无状态的逻辑,比如日期转换函数,输入一个固定的值也会输出一个固定值。

但是有时候需要封装一些有状态的逻辑(随着时间变化而变化),比如跟踪当前鼠标在页面中的位置。可以使用 vue3 的响应式 API(ref、reactive)以及生命周期函数等等。

类似自定义 React hooks。

示例

跟踪当前鼠标在页面中的位置

// 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 }
}

使用

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

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

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

最后

推荐组合式函数库 vueuse

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lvan的前端笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值