321 字
1 分钟
Composition API:逻辑复用的快乐与痛苦
组合式 API:双刃剑
Composition API 是 Vue 3 的灵魂。它允许我们将逻辑通过 Hooks(Composables)的方式进行提取和复用。
理想很丰满
我想象中的代码:
const { user } = useUser()const { articles } = useArticles()const { loading } = useLoading()清爽、干净、模块化。
现实很骨感
实际写出来的代码:
const { user, loading: userLoading, error: userError } = useUser()const { articles, loading: articleLoading, error: articleError } = useArticles()// 命名冲突!到处重命名!而且,如果你把所有逻辑都堆在 setup 里,不加以拆分,它就会变成一个巨大的面条代码(Spaghetti Code),比 Options API 还要难以维护。因为 Options API 至少强制你分开了 data 和 methods。严格来说实际上只要你不在乎史山代码,你完全可以不在乎getter和setter,全放在utils里面,所有的state变量都塞在一个const里面。
令人头秃的细节
Composable 不是独立组件,它在调用方的 setup 阶段同步执行,里面注册的 onMounted 也属于调用它的那个组件。异步任务则要自己暴露 loading、error 和取消逻辑,不能靠调用顺序猜完成时间。我以前写 C++ 更多,被异步状态狠狠摆过一道;后来把“注册副作用”和“等待结果”分开看,脑子终于顺了。

分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Composition API:逻辑复用的快乐与痛苦
https://blog.luozili.work/posts/vue-learning-8/ 部分信息可能已经过时
相关文章 智能推荐
1
Ref vs Reactive:响应式的哲学思考 (头秃篇)
Vue学习之路 对比 Vue 3 中 ref 与 reactive 的使用边界,以及解构、替换对象和模板自动解包时容易踩到的坑。
2
深坑记录:响应式丢失的那一夜
Vue学习之路 复盘一次保存成功但列表不更新的问题,定位对象解构导致的 Vue 响应式丢失,并总结排查顺序。
3
生命周期钩子:生老病死,Vue 组件的一生
Vue学习之路 按创建、挂载、更新和卸载阶段梳理 Vue 3 组件生命周期,以及各类钩子的典型使用场景。
4
Vue 3 启航
Vue学习之路 从 jQuery 时代的回忆出发,记录第一次系统学习 Vue 3、Vite 与组合式 API 的过程。
5
组件通信:Props 传值传到手抽筋
Vue学习之路 对比 Props/Emit、v-model、Provide/Inject 与全局状态等组件通信方式,避免把简单关系写成事件迷宫。





