uniapp pinia实现数据持久化插件

uniapp时间数据持久化兼容多端,话不多说直接上代码。

第一步新建一个插件index.js,内容如下:

javascript 复制代码
import { onLoad,onHide } from "@dcloudio/uni-app";

const KEYPREFIX = 'PINIA:STATE:'

export function storeStorage({store}){
	const KEY = KEYPREFIX + store.$id;
	onLoad(()=>{
		const item = uni.getStorageSync(KEY)
		if(!item) return;
		try{
			const originState = JSON.parse(item);
			store.$patch(originState)
		}catch(e){
			console.log('e',e);
			console.log('存储格式无效');
		}
	})
	onHide(()=>{
		uni.setStorageSync(KEY,JSON.stringify(store.$state))
	})
}

第二步,在main.js中引入并使用

javascript 复制代码
//路径是自己刚才所建js的文件路径
import {storeStorage} from '../plugins/storeStorage.js'
import * as Pinia from 'pinia';


import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  const pinia = Pinia.createPinia()
  pinia.use(storeStorage)
  app.use(pinia);
  return {
    app,
	Pinia
  }
}
相关推荐
掘金安东尼15 小时前
让 JavaScript 更容易「善后」的新能力
前端·javascript·面试
掘金安东尼15 小时前
用 HTMX 为 React Data Grid 加速实时更新
前端·javascript·面试
灵感__idea17 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
yinuo17 小时前
轻松接入大语言模型API -04
前端
袋鼠云数栈UED团队18 小时前
基于 Lexical 实现变量输入编辑器
前端·javascript·架构
cipher18 小时前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
UrbanJazzerati18 小时前
非常友好的Vue 3 生命周期详解
前端·面试
AAA阿giao18 小时前
从零构建一个现代登录页:深入解析 Tailwind CSS + Vite + Lucide React 的完整技术栈
前端·css·react.js
亦妤19 小时前
JS执行机制、作用域及作用域链
javascript
兆子龙19 小时前
像 React Hook 一样「自动触发」:用 Git Hook 拦住忘删的测试代码与其它翻车现场
前端·架构