Pinia 視為 Vuex 的繼任者,在使用上相比於 Vuex 簡易許多,維護成本也降低許多。這邊筆記下一些思路轉換,並提供一個範本作為參考。
概念
1. 由於 Pinia 移除了嵌套的模組架構,所以整體的模組組成各自獨立且扁平化。過往 vuex 會有一個根模組,再以模組方式層層嵌套,其實並不好管理。若要跨模組間呼叫,也無法做到良好的 TypeScript 提示。
2. Pinia 有 state, getters 和 actions ,和 vuex 相比移除掉了 mutations。Pinia 下的 actions 是支援同步和異步操作的。
3. 由於 Pinia 把 state 做了 reactive ,若要讓它變成響應式,需要透過 Pinia 提供的 StoreToRefs 來取得
4. Pinia 的 getters 有暫存的效果,你可以當作如同 computed 的操作。若你要修改 state 的值,可以先呼叫其 module 的 action 方法,再用其操作 state 即可
5. Pinia 一定要先註冊後調用。若你要在 vue-router 中使用,要在 router.beforeEach 的階段才可以使用
程式碼
參考資料
1. Pinia – Vuex 的後繼者
2. Pinia相比Vuex、哪个更好用?
3. 【Vue 3】ref 跟 reactive 我該怎麼選!?