Nuxt3之pinia持久化配置

Nuxt3 配置pinia首选要在 Nuxt3 项目中安装pinia

Nuxt3官方pinia模块安装链接

直接在项目终端下输入 npm 命令
npm i pinia @pinia/nuxt // pinia:
npm i -D @pinia-plugin-persistedstate/nuxt // pinia-plugin-persistedstate
如果你是使用pnpm 或者 yarm 等其他npm工具,直接替换 npm 即可

安装好pinia后,就要配置 nuxt.config

在modules中注册 pinia/nuxt 及 pinia-plugin-persistedstate/nuxt

export default defineNuxtConfig({
  // devtools: { enabled: false },
  ssr: true,
  routeRules: {}, // 对指定页面设置规则
  app: {
    // 设置网页title小图标
    head: {
      link: [{ rel: "icon", type: "image/png", href: "/favicon.png" }],
    },
  },
  modules: [
  	 // 注册模块
    "@pinia/nuxt",
    "@pinia-plugin-persistedstate/nuxt",
  ],
  css: [],//引入css全局文件
  devServer: {
  	// 开启局域网
    host: "0.0.0.0",
  },
  // 运行时常量
  runtimeConfig: {
    // 类似isServer自定义的普通变量只能在服务端拿到
    isServer: true,
    // public 内的变量 服务端 和 客户端 都能拿到
    public: {
      baseUrl: process.env.VITE_SERVER_NAME,
    },
  },
});

在 composables 中创建 store.js

// 网上有很多版本在nuxt.config内使用自动引入defineStore ,我是失败的,按以下手动引入是成功的
import { defineStore } from 'pinia'
// 这里是安装了zipson 用来序列化 缓存 pinia 对象内容,便于阅读
// npm install zipson // zipson 不需要在config中注册,直接使用即可
import {
	parse,
	stringify
} from 'zipson'
export const useTestStore = defineStore('testStore', () => {
    const number = ref(0)
    return {
        number
    }
}, {
    persist: {
        storage: {
            getItem(key) {
                return window.localStorage.getItem(key)
            },
            setItem(key, value) {
                window.localStorage.setItem(key, value)
            },
        },
        serializer: {
            deserialize: parse,
            serialize: stringify,
        }
    }
})

在页面上的使用

const testStore = useTestStore()
console.log(testStore.number)
// 亲测有效,默认是localStore缓存,可以自行配置pinia的其他缓存形式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值