Pinia:Vuex 的继任者,好吃又好用
菠萝(Pinia)真好吃
Vuex 复杂的 mutation, action, getter 曾让人头大。Pinia 的出现,简直是清流。
为什么是 Pinia?
- 没有 Mutation:终于不用为了改个状态写那繁琐的模板代码了,直接在 Action 里改,或者直接改!
- TypeScript 友好:完美的类型推断,不用像 Vuex 那样写一堆泛型接口。
- 极简 API:
defineStore一把梭。
逐渐掉光的头发
随着学习的深入,我发现事情并不像我想象的那么简单。Pinia 这个知识点,简直是我的噩梦。
文档里写得轻描淡写,实际用起来坑巨多。比如,我在 store 里解构 state,结果响应性丢了!
1 | const store = useUserStore() |
必须用 storeToRefs(store)。这种细节,一旦不知道,就是一下午的调试时间。
令人头秃的细节
在这个快速发展的前端时代,技术的更新迭代速度简直让人窒息。每一次框架的更新,不仅带来了新的特性,也带来了新的焦虑。作为一名追求极致体验的开发者,我深知持续学习的重要性。但是,Pinia 的某些行为真的很迷。
比如,它在服务端渲染(SSR)下的 hydration 问题,经常导致客户端和服务端数据不一致,你以为数据传过去了,结果是如传。我花了整整三天时间查阅源码,翻遍了 GitHub 上的 Issues,才勉强理解了其中的奥妙。简单来说,它就像是一个黑盒子,你输入 A,它输出 B,但中间发生了什么,只有上帝和尤雨溪知道。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 llbzow的摸鱼日记 (づ ̄ 3 ̄)づ!






