Pinia介紹
大綱
Pinia簡介
- 可跨元件/頁面共享狀態
- 支援Vue2和Vue3
- TypeScript支援
- Actions 支援同步和非同步
- 移除了Mutations
Pinia&Vuex

Pinia架構

安裝

掛載

創建Store
CPMPF/src/ store

定義Store
引入defineStore

Store ID
Store ID 必須為唯一值
如果ID 重複,在同一個Vue元件/ TS
檔裡定義Store 實例變數的時候,會以
先定義的為有效值,後續定義的store不
會覆蓋先前定義的store

Store範例

元件引入Pinia

取用state
Components引入完
此時store已經是proxy的格式,直接”userStore.”就可以取出變數或方法

storeToRefs 解構
- 透過解構來生省略用時”userStore.”的字眼
- state、getters需透過pinia的storeToRefs方法來解構(若用一般方法解構會失去響應式的功能)
- Store裡的function可以用一般解構方式解構

$reset初始化

$patch 批量修改(物件形式)
- 以賦值的方式來修改值
- $patch須帶入一個物件,物件裡寫欲修改的變數與值
- 可修改一至多個變數

$patch 批量修改(函數形式)

$subscribe 訂閱
- 監聽state的變化
- 若state有被修改則會觸發$subscribe

Store寫法差異

@yu736