今天在项目中深度使用了一下 pinia ,浅谈下感受。
在功能上,pinia 和 vuex 其实是一致的,就是将数据、逻辑存到一个独立于组件的、全局可以访问的地方。其实 react 的 redux 也是类似。
书写体验上,pinia 有以下几点让人用起来很舒适。
- 可以直接对 store 内的数据进行获取和修改,这样让代码书写更趋近于原生的写法。
- 虽然在 defineStore 中可以区分 state、getter、actions,但在使用的时候却都是如
store.count
、state.getCount()
这样的,写法上没有区分这些类型。也是一种趋近于原生的写法。(其实也是兼容 setup 写法,因为在 setup 写法中是不区分这些的) - 可以使用类似 setup 的写法来书写 pinia,在书写复杂对象时就很有优势。
另外,pinia 在使用新写法的同时,也保留了 vuex 中类似 store.dispatch()
的写法。这种写法虽然繁琐,但是却也有利于 pinia action 行为的检索。
最后,我感觉的思路 pinia 是基于 vuex,再结合 vue3 中 setup 写法的思路,而产出的更优化版本的状态存储库。