惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
U
Unit 42
N
Netflix TechBlog - Medium
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
小众软件
小众软件
V
Visual Studio Blog
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
博客园 - 叶小钗
GbyAI
GbyAI
爱范儿
爱范儿
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
博客园_首页
D
Docker
A
About on SuperTechFans
G
Google Developers Blog
I
InfoQ
T
The Blog of Author Tim Ferriss
V
V2EX
博客园 - Franky

卖坚果的怪叔叔

从 6 月 12 号到今天已经失业 85 天了。 卖坚果的怪叔叔 什么是Agent? 什么是 Skill? 失业在家,我给小朋友做了一个练字小程序! 上海九院口腔下颌骨囊肿手术小记 上线8年,15万用户的小程序,一共赚了多少钱? 糟糕的三月 还未见面的小狗,去天堂了。 快过年了!你们放假通知下来了吗? 免费领取一年Gemini Pro使用权益!! 2025年,如梦一场! 西安! WordPress评论留言通知推送插件! 初冬!暖日!东太湖慢行! H5在safari上fixed不触底bug? 2025年国庆的一些记录! 秋末的晚上 我用Trae做了一个一键同步热点要闻到公众号的工具 使用uview-plus遇到的一些问题! Nuxt3中的水合是什么?以及使用中的一些总结! Element Plus Upload 添加支持拖拽排序~ 夏日的周末! 腾讯视频VIP会员免费领取!3-31天。 七月已经到中旬了呀 周末了,但也过得太快了吧。 吐血收集的1000+九号电动车提示音,免费领取! 生活中的突发事件 小毛驴历险记2 小毛驴历险记 QQ,你有多久没有打开啦!
Nuxt3中piana持久化处理!
坚果大叔 2025-06-22 18:45:45技术阅读 2,881 · 2025-06-22 · via 卖坚果的怪叔叔

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

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

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

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

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

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

2、piana 中设置storesDirs,就能直接在页面使用相关store的配置,而无需手动引入。

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 新建如下插件配置,经过测试后其实是没有用的。

import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
export default defineNuxtPlugin((nuxtApp) => {
    nuxtApp.$pinia.use(piniaPluginPersistedstate)
})

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

import { defineStore } from "pinia";
const useBaseData= defineStore("abc", {
    state: () => ({
        data: null as string | null,
    }),
    actions: {
        async updateData(newVer: string) {

        },
    },
    persist: true,
});
export default useBaseData;