程赞
程赞
  • 发布:2025-04-30 14:31
  • 更新:2025-06-23 09:41
  • 阅读:82

uniapp编译的鸿蒙app退出后再打开,存webview里storage的数据被清空了,这个怎么解决?

分类:uni-app

uniapp编译的鸿蒙app,我把用户登录信息保存到storage,退出app后再重新打开app,storage存的数据没有了,这个应该怎么解决?

2025-04-30 14:31 负责人:无 分享
已邀请:
程赞

程赞 (作者)

import {  
    createPinia  
} from 'pinia'  
// 引入持久化插件  
import { createPersistedState } from 'pinia-plugin-persistedstate'  

const pinia = createPinia()  
// 使用持久化插件  
pinia.use(createPersistUni())  

/**  
 * @description 自定义pinia持久化API存储方式为uni  
 */  
function createPersistUni() {  
    return createPersistedState({  
        storage: {  
            getItem: uni.getStorageSync,  
            setItem: uni.setStorageSync  
        }  
    })  
}  

export default pinia  
/// 其它代码
程赞

程赞 (作者)

import { defineStore } from 'pinia'  
// 其它代码  

export const useUserStore = defineStore('user', {  
    state: () => {  
        return {  
            si: '',  
            token: '',  
            userInfo: {}, // 用户信息  
            userAuthInfo: {}, // 当前登录用户的授权信息  
            systemInfo: {}, // 系统信息  
            loginHostSN: '',  
            userSexList: [  
                {  
                    label: '男',  
                    value: '1'  
                },  
                {  
                    label: '女',  
                    value: '2'  
                }  
            ],  
        }  
    },  

    actions: {  
        // 设置SI  
        setSi(si) {  
            this.si = si  
        },  

        // 设置token  
        setToken(token) {  
            this.token = token  
        },  

        // 设置用户信息  
        setUserInfo(data) {  
            this.userInfo = data  
        },  

        // 设置当前登录用户的授权信息  
        setUserAuthInfo(data) {  
            this.userAuthInfo = data  
        },  

        // 设置系统信息  
        setSystemInfo(data) {  
            this.systemInfo = data  
        },  

        // 退出登录,清空用户信息  
        logout() {  
            hostAPI.logout({  
                "si": this.si, // 用户唯一标识  
            })  
            this.setSi('')  
            this.setToken('')  
            this.setUserInfo({})  
            this.setUserAuthInfo({})  
            const homeFloorRoom = useHomeFloorRoomStore()  
            const deviceStore = useDeviceStore()  
            const smartStore = useSmartStore()  

            deviceStore.setDeviceList([])  
            deviceStore.setIndexDeviceList([])  
            homeFloorRoom.setFloorAndRoom([])  
            homeFloorRoom.setHomeList([])  
            // // 重置智能  
            smartStore.resetSmart()  
            try {  
                mqtt.close()  
            } catch (e) {  
                console.log(JSON.stringify(e))  
            }  
            homeFloorRoom.setCurrentHome({})  
        },  
    },  

    persist: {  
        storage: {  
            getItem: uni.getStorageSync,  
            setItem: uni.setStorageSync  
        },  
        key: 'user'  
    }  
});  

export function useUserStoreWithOut(store) {  
  return useUserStore(store)  
}  
2***@qq.com

2***@qq.com

我也是这个问题,有解决方案吗

要回复问题请先登录注册