如何在 uniapp 里面使用 pinia 数据持久化 (pinia-plugin-persistedstate)

想要在 uniapp 里面使用 pinia-plugin-persistedstate 会遇到的问题就是 uniapp里面没有浏览器里面的 sessionStorage localStorage 这些 api

我们只需要替换掉 pinia-plugin-persistedstate 默认的储存 api 就可以了。使用 createPersistedState 重新创建一个实例, 把里面的 storage 的参数修改为对应的 uniapp 里面的 storage api 就可以. 已经提取在 customStorage 函数里面了.

ts 复制代码
import 'virtual:uno.css'
import { createSSRApp } from "vue";
import uviewPlus from 'uview-plus'
import { createPinia } from 'pinia'
import { createPersistedState } from 'pinia-plugin-persistedstate'
import App from "./App.vue";
export function createApp() {
  const pinia = createPinia()
  pinia.use(customStorage())
  const app = createSSRApp(App);
  app.use(uviewPlus)
  app.use(pinia)
  return {
    app,
    pinia
  };
}

/**
 * @description 自定义pinia持久化api储存方式为 unisetStorageSync
 * @returns 
 */
function customStorage() {
  return createPersistedState({
    storage: {
      getItem(key: string) {
        return uni.getStorageSync(key)
      },
      setItem(key: string, value: any) {
        uni.setStorageSync(key, value)
      }
    }
  })
}
相关推荐
亿坊电商3 小时前
PHP框架的资源管理机制如何优雅适配后台任务?
开发语言·php
VBA63374 小时前
YZ系列工具之YZ09: VBA_Excel之读心术
开发语言
pro_or_check4 小时前
自然语言编程:从一段Perl程序说起
开发语言
ᐇ9594 小时前
Java集合框架实战:HashMap与HashSet的妙用
java·开发语言
孤狼warrior4 小时前
公司信息建设库数据 使用调用堆栈的JS逆向爬虫
javascript·爬虫
csbysj20204 小时前
Scala 异常处理
开发语言
MediaTea4 小时前
Python 第三方库:cv2(OpenCV 图像处理与计算机视觉库)
开发语言·图像处理·python·opencv·计算机视觉
泯泷5 小时前
Tiptap 深度教程(四):终极定制 - 从零创建你的专属扩展
前端·javascript·架构
局i5 小时前
vue简介
前端·javascript·vue.js
初见无风5 小时前
4.4 Boost库工具类assign 的使用
开发语言·c++·boost