Vue.js Cheatsheet - API Reference

Vue 3 日常开发必备语法与 API 都在这里了,从响应式基础到组合式函数,按类别分类整理,写代码时直接复制。

Languages·46 commands·Last updated 2026-07-21
Back to Languages

响应式基础 8

const count = ref(0)
响应式基本类型
count.value++
修改 ref(脚本中需 .value)
const state = reactive({ name: "Vue" })
响应式对象
const doubled = computed(() => count.value * 2)
只读计算属性
const w = computed({ get: () => v.value, set: (x) => (v.value = x) })
可写计算属性
watch(count, (n, o) => {}, { immediate: true })
侦听器并立即执行一次
watchEffect(() => console.log(count.value))
自动追踪依赖的侦听器
const { name } = toRefs(state)
解构对象保持响应式

生命周期 6

onBeforeMount(() => {})
挂载前
onMounted(() => {})
挂载后(常用于发请求)
onBeforeUpdate(() => {})
响应式数据更新前
onUpdated(() => {})
响应式数据更新后
onBeforeUnmount(() => {})
卸载前(清理副作用)
onUnmounted(() => {})
卸载后

组件通信 6

defineProps<{ msg: string }>()
声明 props(类型方式)
const emit = defineEmits(["change"])
声明向父组件发送的事件
defineExpose({ method() {} })
暴露方法给父组件 ref
provide("theme", "dark")
向后代组件注入数据
const theme = inject("theme", "light")
接收注入并设置默认值
const model = defineModel<string>()
双向绑定(Vue 3.4+)

组合式函数 5

function useCounter(n = 0) { const c = ref(n); return { c, inc: () => c.value++ } }
自定义计数器钩子
const { c, inc } = useCounter(10)
使用自定义组合式函数
function useMouse() { const x = ref(0); const y = ref(0); return { x, y } }
封装鼠标位置
function useEventListener(el, ev, cb) { onUnmounted(() => el.removeEventListener(ev, cb)) }
封装事件监听并自动清理
function useFetch(url) { /* return { data, error, loading } */ }
封装异步请求

路由与状态 7

const route = useRoute()
获取当前路由信息
const router = useRouter()
获取路由实例
router.push("/users")
编程式跳转
router.replace("/login")
替换路由(不留历史)
const store = useCounterStore()
获取 Pinia store
const { count } = storeToRefs(store)
解构 store 状态保持响应式
store.$patch({ count: 1 })
批量更新 store 状态

模板语法 8

{{ message }}
文本插值
:href="url"
属性绑定(v-bind 缩写)
@click="handler"
事件绑定(v-on 缩写)
v-model="form.name"
双向绑定
v-if / v-else-if / v-else
条件渲染
v-for="item in list" :key="item.id"
列表渲染(必须加 key)
<Teleport to="body">
将内容传送到指定 DOM 节点
<slot name="header" />
具名插槽

性能优化 6

const list = shallowRef([])
浅响应式(大对象/大列表优化)
markRaw(obj)
标记对象永不响应式
v-memo="[a, b]"
模板记忆(Vue 3.2+)
defineAsyncComponent(() => import("./Comp.vue"))
异步组件懒加载
<KeepAlive include="UserList">
缓存组件实例状态
<Suspense>
协调异步组件加载

💡 Tips

  • ref 用于基本类型,reactive 用于对象;ref 在脚本中需 .value 访问,模板中自动解包。
  • computed 有缓存只在依赖变化时重算;watch 默认懒执行,加 immediate: true 可立即触发一次。
  • defineProps、defineEmits、defineExpose、defineModel 是编译器宏,无需 import 即可使用。
  • 解构 reactive 对象会丢失响应式,用 toRefs 包装后再解构可保持响应式。
  • 大列表用 shallowRef + v-memo,路由组件用 defineAsyncComponent 懒加载可提升性能。