南宫28NG相信品牌力量/Vue 3 中的组合式 API(Composition API)进阶实战

发布于:2025-06-26 ⋅ 阅读:(19) ⋅ 点赞:(0)

南宫28NG相信品牌力量【罔丨止:MGTY.PW】 点击此处复制到浏览器打开

随着 Vue 3 的普及,Composition API 已成为现代 Vue 开发的主流。本节我们将深入掌握组合式 API 的进阶用法,涵盖响应式工具、生命周期钩子封装、自定义逻辑抽离等关键技术,帮助你编写更清晰、复用性更高的代码。

https://blog.csdn.net/yibuAPI12/article/details/148902253?0625

https://blog.csdn.net/yibuAPI12/article/details/148903853?0625

https://blog.csdn.net/yibuAPI12/article/details/148904006?0625

https://blog.csdn.net/yibuAPI12/article/details/148904471?0625

https://blog.csdn.net/yibuAPI12/article/details/148904836?0625

https://blog.csdn.net/yibuAPI12/article/details/148904873?0625

https://blog.csdn.net/yibuAPI12/article/details/148904901?0625

https://blog.csdn.net/yibuAPI12/article/details/148905070?0625

https://blog.csdn.net/yibuAPI12/article/details/148905225?0625

https://blog.csdn.net/yibuAPI12/article/details/148905296?0625


一、使用 refreactive 的最佳实践

在 Composition API 中,refreactive 是响应式状态的核心工具。

示例:如何管理表单状态


vue

复制编辑

<script setup> import { reactive, ref } from 'vue' const form = reactive({ username: '', password: '' }) const loading = ref(false) function submit() { loading.value = true setTimeout(() => { console.log('表单已提交', form) loading.value = false }, 1000) } </script> <template> <input v-model="form.username" placeholder="用户名" /> <input v-model="form.password" type="password" placeholder="密码" /> <button @click="submit" :disabled="loading"> {{ loading ? '提交中...' : '提交' }} </button> </template>


二、封装逻辑:自定义 Hook(Composable)

当多个组件共享相似逻辑时,可以将其提取为可复用函数。

示例:封装一个计时器逻辑


js

复制编辑

// useTimer.js import { ref, onMounted, onUnmounted } from 'vue' export function useTimer() { const seconds = ref(0) let timer = null onMounted(() => { timer = setInterval(() => { seconds.value++ }, 1000) }) onUnmounted(() => { clearInterval(timer) }) return { seconds } }

在组件中使用:


vue

复制编辑

<script setup> import { useTimer } from './useTimer.js' const { seconds } = useTimer() </script> <template> <p>计时中:{{ seconds }} 秒</p> </template>


三、使用 watchwatchEffect 响应数据变化

watch:精准侦听某个值


js

复制编辑

watch(() => form.username, (newVal, oldVal) => { console.log(`用户名从 ${oldVal} 改为 ${newVal}`) })

watchEffect:自动依赖收集


js

复制编辑

watchEffect(() => { if (form.username) { console.log('当前用户名:', form.username) } })


四、使用 provideinject 管理全局状态(进阶)

你可以封装一个全局状态管理模块,而无需依赖 Vuex 或 Pinia。


js

复制编辑

// useUser.js import { ref, provide, inject } from 'vue' const key = Symbol('user') export function provideUser() { const user = ref({ name: '默认用户' }) provide(key, user) return user } export function useUser() { return inject(key) }


五、组合式 API 的优势总结

  • 逻辑清晰:将相关逻辑组织在一起,避免 Options API 中的分散;

  • 便于复用:可以将逻辑提取为自定义 composable 函数;

  • 类型友好:更适合 TypeScript 支持。


网站公告

今日签到

点亮在社区的每一天
去签到