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
更多关于uni-app打包成apk后uni.setStorageSync只能存储当前页面,页面切换时获取不到存储的值的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中,uni.setStorageSync 和 uni.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. 页面生命周期问题
确保你在页面的 onLoad 或 onShow 生命周期中获取存储的值,而不是在 onReady 或其他生命周期中。
onLoad() {
const value = uni.getStorageSync('key');
console.log(value);
}
4. 存储空间问题
检查设备的存储空间是否充足,如果存储空间不足,可能会导致存储失败。
5. 权限问题
确保你的应用有权限访问本地存储。在 Android 平台上,可能需要检查应用的存储权限是否被正确授予。
6. 调试工具问题
使用 uni.getStorageInfoSync 或 uni.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'
}

