uni-app打包成apk后uni.setStorageSync只能存储当前页面,页面切换时获取不到存储的值

uni-app打包成apk后uni.setStorageSync只能存储当前页面,页面切换时获取不到存储的值

示例代码:

以下是获取不到的例子:在A页面存储后在B页面是获取不到的,但是在A页面提示是存储成功了

A页面

uni.setStorageSync("token", result.token)  
uni.setStorageSync('ceshi','ceshi')  
uni.setStorage({  
    key:'wuyu',  
    data:'aaaaaaa',  
    success(res) {  
    console.log(res,'存储成功');  
}  
})  

B页面  
const value =uni.getStorageSync('ceshi');  
if(value){  
    console.log(value)  
    this.ces=value;  
}else{  
    this.ces='没获取到'  
    console.log('没获取到');  
}  
uni.getStorage({  
    key: 'wuyu',  
    success:(res) =>{  
        console.log(res.data,'-----w1wuyu');  
    },  
    fail:(err)=> {  
        console.log(err,'获取不到');  
    }  
});  

以下是获取的到的例子,在A页面存储,在A页面获取  
uni.setStorageSync('ceshi','ceshi')  
const value =uni.getStorageSync('ceshi');  
console.log(value,'本地存储的值类型');  
if(value){  
    console.log(value)  
    this.ces=value;  
}else{  
    this.ces='没获取到'  
    console.log('没获取到');  
}

操作步骤:

A页面

uni.setStorageSync("token", result.token)  
uni.setStorageSync('ceshi','ceshi')  
uni.setStorage({  
    key:'wuyu',  
    data:'aaaaaaa',  
    success(res) {  
    console.log(res,'存储成功');  
}  
})  

B页面  
const value =uni.getStorageSync('ceshi');  
if(value){  
    console.log(value)  
    this.ces=value;  
}else{  
    this.ces='没获取到'  
    console.log('没获取到');  
}  
uni.getStorage({  
    key: 'wuyu',  
    success:(res) =>{  
        console.log(res.data,'-----w1wuyu');  
    },  
    fail:(err)=> {  
        console.log(err,'获取不到');  
    }  
});

预期结果:

预期结果是获取的到存储的值

实际结果:

结果一个都没获取到

bug描述:

uniapp打包成apk后bug,uni.setStorageSync(‘key’,‘value’),只能在当前页面上存储和获取操作,如果在其他页面是获取不到存储的值。还有

uni.setStorage({
key:'wuyu',
data:'aaaaaaa',
success(res) {
console.log(res,'存储成功');
}
})

这俩个我都试了,没一个成功的,但是在微信开发者工具和真机调试下都是可以获取的到,就是在运行到手机或模拟器还有打包成apk获取不到

开发环境 版本号 项目创建方式
Windows WIN11专业版 HBuilderX
手机系统 手机系统版本号 手机厂商
---------- ---------------- ----------
Android Android 14 小米


更多关于uni-app打包成apk后uni.setStorageSync只能存储当前页面,页面切换时获取不到存储的值的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app打包成apk后uni.setStorageSync只能存储当前页面,页面切换时获取不到存储的值的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中,uni.setStorageSyncuni.getStorageSync 是用于在本地存储中同步设置和获取数据的 API。这些数据是全局的,不会因为页面切换而丢失。如果你在打包成 APK 后遇到 uni.setStorageSync 存储的值在页面切换时获取不到的问题,可能是以下几个原因导致的:

1. 存储的键名冲突

确保你在不同页面中使用的键名是唯一的,避免键名冲突导致数据被覆盖或获取不到。

// 页面 A
uni.setStorageSync('key', 'valueA');

// 页面 B
uni.setStorageSync('key', 'valueB'); // 这里会覆盖页面 A 存储的值

2. 存储时机问题

确保你在存储数据后,再进行页面跳转。如果存储操作是异步的,可能会导致数据还未存储完成就跳转了页面。

uni.setStorageSync('key', 'value');
uni.navigateTo({
    url: '/pages/otherPage'
});

3. 页面生命周期问题

确保你在页面的 onLoadonShow 生命周期中获取存储的值,而不是在 onReady 或其他生命周期中。

onLoad() {
    const value = uni.getStorageSync('key');
    console.log(value);
}

4. 存储空间问题

检查设备的存储空间是否充足,如果存储空间不足,可能会导致存储失败。

5. 权限问题

确保你的应用有权限访问本地存储。在 Android 平台上,可能需要检查应用的存储权限是否被正确授予。

6. 调试工具问题

使用 uni.getStorageInfoSyncuni.getStorageInfo 来检查存储的内容,确保数据确实被存储了。

const storageInfo = uni.getStorageInfoSync();
console.log(storageInfo);

7. uni-app 版本问题

确保你使用的 uni-app 版本是最新的,或者至少是一个稳定的版本。某些旧版本可能存在 bug,导致存储功能不正常。

8. 自定义组件或插件问题

如果你使用了自定义组件或插件,检查它们是否有可能影响了存储功能。

9. 打包配置问题

检查你的打包配置,确保没有配置错误导致存储功能异常。

10. 真机调试

在真机上进行调试,查看是否有与模拟器不同的行为。有时模拟器和真机的行为可能会有所不同。

示例代码

以下是一个简单的示例,展示如何在页面 A 存储数据,并在页面 B 获取数据:

// 页面 A
uni.setStorageSync('key', 'valueA');
uni.navigateTo({
    url: '/pages/PageB'
});

// 页面 B
onLoad() {
    const value = uni.getStorageSync('key');
    console.log(value); // 应该输出 'valueA'
}
回到顶部