首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Nuxt3中pinia持久化处理!

Nuxt3中pinia持久化处理!

作者头像
执行上下文
发布2025-11-20 19:01:47
发布2025-11-20 19:01:47
430
举报
文章被收录于专栏:执行上下文执行上下文

在使用nuxt3开发SSR渲染的项目的时候,如何将pinia持久化到本地?如何自动引入自定义的仓库store模块,减少手动引入的麻烦?

使用插件 @pinia-plugin-persistedstate/nuxt 来达到持久化的目的。

npm i @pinia-plugin-persistedstate/nuxt 前提也需要安装 nuxt pinia模块@pinia/nuxt 。

安装完成后在nuxt.config.js中进行以下配置。

1、在modules中配置刚刚安装的两个模块依赖。

首先设置piniaPersistedstate,cookieOptions是设置过期时间,storage用来指定使用localStorage还是sessionStorage。需要注意⚠️,在服务端渲染的时候没有此关键字。所以需要添加判断只能在客户端的时候持久化。

2、pinia 中设置storesDirs,就能直接在页面使用相关store的配置,而无需手动引入。
代码语言:javascript
复制
export default defineNuxtConfig({
  ssr: true,
  compatibilityDate: '2024-11-01',
  devtools: { enabled: true },
  modules: [
    '@pinia/nuxt',
    '@pinia-plugin-persistedstate/nuxt',
  ],
  pinia: {
    storesDirs: ['./store/**']
  },
  piniaPersistedstate: {
    cookieOptions: {
      maxAge: 2 * 365 * 24 * 60 * 60 * 1000
    },
    storage: typeof window !== 'undefined' ? 'localStorage' : 'cookies',
    debug: import.meta.env.DEV
  },
})

另外有的解决方法中,让在plugins 新建如下插件配置,经过测试后其实是没有用的。

代码语言:javascript
复制
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
export default defineNuxtPlugin((nuxtApp) => {
 nuxtApp.$pinia.use(piniaPluginPersistedstate)
})

然后在自定义pinia的模块中添加 persist:true选项来进行持久化配置。

代码语言:javascript
复制
import { defineStore } from "pinia";
const useBaseData= defineStore("abc", {
    state: () => ({
        data: null as string | null,
    }),
    actions: {
        async updateData(newVer: string) {

        },
    },
    persist: true,
});
export default useBaseData;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 执行上下文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装完成后在nuxt.config.js中进行以下配置。
    • 1、在modules中配置刚刚安装的两个模块依赖。
    • 2、pinia 中设置storesDirs,就能直接在页面使用相关store的配置,而无需手动引入。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档