import { createPinia, setActivePinia } from 'pinia'
import type { Pinia } from 'pinia'
-import { defineNuxtPlugin, type Plugin } from '#app'
-import { toRaw } from 'vue'
+import { defineNuxtPlugin, useNuxtApp, type Plugin } from '#app'
const plugin: Plugin<{ pinia: Pinia }> = defineNuxtPlugin({
name: 'pinia',
nuxtApp.vueApp.use(pinia)
setActivePinia(pinia)
- if (import.meta.server) {
- nuxtApp.payload.pinia = toRaw(pinia.state.value)
- } else if (nuxtApp.payload && nuxtApp.payload.pinia) {
+ if (nuxtApp.payload && nuxtApp.payload.pinia) {
pinia.state.value = nuxtApp.payload.pinia as any
}
},
}
},
+ hooks: {
+ 'app:rendered'() {
+ const nuxtApp = useNuxtApp()
+ nuxtApp.payload.pinia = (nuxtApp.$pinia as Pinia).state.value
+ setActivePinia(undefined)
+ },
+ },
})
export default plugin