今天在項目中深度使用了一下 pinia ,淺談下感受。
在功能上,pinia 和 vuex 其實是一致的,就是將數(shù)據(jù)、邏輯存到一個獨立于組件的、全局可以訪問的地方。其實 react 的 redux 也是類似。
書寫體驗上,pinia 有以下幾點讓人用起來很舒適。
- 可以直接對 store 內(nèi)的數(shù)據(jù)進行獲取和修改,這樣讓代碼書寫更趨近于原生的寫法。
- 雖然在 defineStore 中可以區(qū)分 state、getter、actions,但在使用的時候卻都是如
store.count
、state.getCount()
這樣的,寫法上沒有區(qū)分這些類型。也是一種趨近于原生的寫法。(其實也是兼容 setup 寫法,因為在 setup 寫法中是不區(qū)分這些的) - 可以使用類似 setup 的寫法來書寫 pinia,在書寫復雜對象時就很有優(yōu)勢。
另外,pinia 在使用新寫法的同時,也保留了 vuex 中類似 store.dispatch()
的寫法。這種寫法雖然繁瑣,但是卻也有利于 pinia action 行為的檢索。
最后,我感覺的思路 pinia 是基于 vuex,再結合 vue3 中 setup 寫法的思路,而產(chǎn)出的更優(yōu)化版本的狀態(tài)存儲庫。