【uniapp】状态存储Pinia的使用,以及它的数据持久化

1、下载安装pinia,引入pinia

javascript 复制代码
//stores->index.ts
import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate' //持久化插件

// 创建 pinia 实例
const pinia = createPinia()
// 使用持久化存储插件
pinia.use(persist)

// 默认导出,给 main.ts 使用
export default pinia

// 模块统一导出
export * from './modules/member'
// export * from './modules/xxxxx' //如果有多个模块,依次导出即可
// export * from './modules/xxxxx' //如果有多个模块,依次导出即可

并且在main.ts中引入:

javascript 复制代码
import { createSSRApp } from 'vue'
import pinia from './stores'

import App from './App.vue'
export function createApp() {
  const app = createSSRApp(App)

  app.use(pinia)
  return {
    app,
  }
}

2、定义pinia,并持久化

javascript 复制代码
//stores->modules->member.ts
import { defineStore } from 'pinia'

// 定义 Store
export const useMemberStore = defineStore('member', {
  state: () => ({
    profile: null,
  }),
  actions: {
    setProfile(obj: any) {
      this.profile = obj
    },
    clearProfile() {
      this.profile = null
    },
  },
  //pinia数据持久化
  persist: {
    storage: {
      getItem(key) {
        return uni.getStorageSync(key)
      },
      setItem(key, value) {
        return uni.setStorageSync(key, value)
      },
    },
  },
})
相关推荐
swipe1 小时前
从 0 到 1 理解 React 虚拟列表:定高、不定高与 Canvas 版本完整拆解
前端·javascript·面试
铁皮饭盒1 小时前
Bun执行python代码
前端·javascript·后端
hunterandroid2 小时前
Service 与前台服务:让任务在后台持续运行
前端
米饭同学i2 小时前
深扒 LobsterAI 官网前端动效实现方案:从交互细节到代码实践
前端
前端啊2 小时前
告别 el-table 打印难题,vue3-print-el-table 来了!
前端·vue.js
JarvanMo2 小时前
AI时代跨平台还有必要吗?
前端
Patrick_Wilson2 小时前
幂等到底是什么?从前端视角讲透 SQL、HTTP 与 POST 接口的幂等设计
前端·后端·架构
凌览2 小时前
一人公司别再上 Jenkins,真不值
前端·后端
oil欧哟2 小时前
Codex 最佳实践(超级长文):先搞懂 AI,再用好 AI
前端·人工智能·后端
小小小小宇2 小时前
前端渲染方式
前端