[筆記] Nuxt 換頁重設全部 pinia Store

章節連結

開發 Nuxt 專案在執行換頁時,預設是不會重設所有的 pinia store 內容。若真要實現這樣的需求,那就得自行撰寫一個 plugin 來註冊所有的 store,並同時在載入每一頁時,觸發 pinia 自帶的 $reset 方法即可。

nuxt-js-logo


內容

寫一個 useStoreReset 方法,並用一個全域變數如 registeredStores 來儲存已經註冊的 store。這樣一來你在各檔案呼叫的 useStoreReset() 時,就可拿到所有已經進行初始化的 store,進而可用每一個 store 實例的 $reset 方法來重設預設值。

順帶一提,store 必須是用 option 的方式宣告,否則你就得自行撰寫這個 $reset 方法。

https://pinia.vuejs.org/core-concepts/state.html#Resetting-the-state

程式碼

至於呼叫 registerStore 的時間點,那就自行撰寫一個 plugin,然後當 nuxtApp 內有 $pinia 時就呼叫即可

 

按讚加入粉絲團