uniapp时间数据持久化兼容多端,话不多说直接上代码。
第一步新建一个插件index.js,内容如下:
import { onLoad } 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('存储格式无效');
}
})
const saveState = () => {
try {
uni.setStorageSync(KEY, JSON.stringify(store.$state))
} catch (e) {
console.error('保存状态失败', e);
}
}
let saveTimer = null;
store.$subscribe((mutation, state) => {
if (saveTimer) clearTimeout(saveTimer);
saveTimer = setTimeout(saveState, 1000);
})
}
第二步,在main.js中引入并使用
//路径是自己刚才所建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
}
}
750

被折叠的 条评论
为什么被折叠?



