一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • 【Nuxt3】PiniaがlocalStorageに永続化されない原因がしょうもなかった

タイトルにもある通り、PiniaでStoreの内容をlocalStorageに永続化させようと思って実装してみたが、なぜか永続化されなくて困っていました。

というか、面倒だったので後回しにしてました。

 

今回必要に迫られて、VueとかNuxtとかPiniaとか@pinia/nuxtとかのバージョンを疑ったりvue.config.tsの内容を疑ったり色々したんですが、結果まじでしょうもないけどなかなか気付けない原因だったので共有です。

バージョン

バージョンは原因とは関係ありませんでしたが、Piniaはバージョンごとに書き方が頻繁に変更されているので一応。

  • vue: “^3.5.13”
  • nuxt: “^3.15.0”
  • pinia: “^3.0.2”
  • @pinia/nuxt: “^0.11.0”

 

正しいソース

import { defineStore } from ‘pinia’export const xxxStore = defineStore(
‘xxxStore’,
() => {
const dic = ref<{ jwt: string }>({
jwt: ”
})

const setJwt = (jwt: string) => {
dic.value.jwt = jwt
}

const getJwt = () => {
return dic.value.jwt
}

return {
dic,
setJwt,
getJwt
}
},
{
persist: {
storage: piniaPluginPersistedstate.localStorage()
}
})

 

原因

原因は上記ソースでいう”dic”をreturnしていなかったからです。

defineStoreの第2引数で実際の値を返却しないと、Pinia側が「どの値を永続化すればええん?」ってなるんだと思います。

永続化対象を明示的に指定している訳ではないですし。

 

結論:値もちゃんとreturnしよう

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア