vue3开发常用的核心函数有哪些
Vue 3 开发中,最核心的是一组被称为组合式 API (Composition API) 的函数。它们能帮你更好地组织和复用代码,也是配合 <script setup> 语法的主力。
核心常用函数速查表
| 分类 | 函数名 | 核心作用 | 使用要点 |
|---|---|---|---|
| 响应式数据 |
ref()
|
定义基本类型、对象或数组的响应式数据。 |
在 JS 中通过 .value 访问/修改,模板中可直接使用。也常用于获取 DOM 元素引用。
|
reactive()
|
定义对象或数组的响应式数据。 |
直接操作属性(如 state.count++),无需 .value。注意:解构会丢失响应性。
|
|
| 计算与监听 |
computed()
|
定义计算属性,基于已有数据派生新数据,且有缓存。 |
传入一个 getter 函数。也可传入 { get, set } 对象创建可写计算属性。
|
watch()
|
显式监听一个或多个数据源,在数据变化时执行副作用(如异步请求)。 | 可以获取变化前后的值。适合需要监听特定数据并执行复杂逻辑的场景。 | |
watchEffect()
|
自动追踪其内部用到的所有响应式数据,并立即执行副作用。 | 不需要指定监听目标,依赖关系更灵活,但无法获取旧值。 | |
| 组件通信 |
defineProps()
|
子组件接收父组件传递的数据。 |
在 <script setup> 中无需导入即可使用。支持类型声明和校验。
|
defineEmits()
|
子组件向父组件发送自定义事件。 | 用于在子组件中触发事件,并传递数据给父组件。 | |
defineExpose()
|
子组件暴露自己的属性或方法给父组件。 |
父组件通过模板引用 (ref) 可以访问到暴露的内容。
|
|
| 生命周期 |
onMounted()
|
组件挂载到 DOM 后执行。 | 最常用的钩子,适合在这里发起 API 请求、操作 DOM。 |
onUnmounted()
|
组件卸载前执行。 | 清理工作,如清除定时器、解绑事件监听器。 |
组合式函数 (Composables)
除了上述基础函数,Vue 3 开发中的一个强大模式是组合式函数。你可以把它理解成一种更高级的逻辑复用方式。
简单来说,就是把一块包含状态(ref/reactive)和逻辑(watch/生命周期等)的代码,封装成一个以 use 开头的普通函数,然后在不同组件中按需使用。
一个经典的鼠标追踪例子:
// useMousePosition.js
import { ref, onMounted, onUnmounted } from 'vue'
export function useMousePosition() {
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 { useMousePosition } from './useMousePosition'
const { x, y } = useMousePosition() // 直接解构,响应式不丢失
</script>
<template>
<p>鼠标位置: {{ x }}, {{ y }}</p>
</template>
这种模式能帮你把复杂的组件逻辑像搭积木一样组合起来,让代码更清晰、更易于维护。社区中非常流行的工具库 VueUse 就是基于这个思想构建的。