一、场景
uniapp引用pinia,app端进入应用白屏。
reportJSException >>>> exception function:createInstanceContext,
exception:white screen cause create instanceContext failed,check js
stack -> /at useStore (app-service.js:2309:15)
二、分析
问题出现的原因就是store实例环境还没加载。
代码层面问题出现的位置在store.js文件里,通过$subscribe实现持久化这块。
三、解决
加上定时器,延时2s再让它持久化
四、扩展
import {
defineStore
} from 'pinia';
export const useUserStore = defineStore({
id: "user",
// 使用defineStore方法定义store
state() {
// state表示这个store里的状态,也就是存放数据的地方
return {
userInfo: {
username: null,
avatar: null
}
}
},
actions: {}
})
// 通过$subscribe实现持久化,
setTimeout(() => {
const instance = useUserStore();
instance.$subscribe((mutation, state) => {
uni.setStorageSync(instance.$id, JSON.stringify(state))
});
const val = uni.getStorageSync(instance.$id);
if (val) {
instance.$state = JSON.parse(val);
}
}, 2000)