uni-app uni.setStorage 无效果
uni-app uni.setStorage 无效果
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 12.6.1 (21G217) | HBuilderX |
3.8.12 |
产品分类:uniapp/App
PC开发环境操作系统:Mac
手机系统:Android
手机系统版本号:Android 14
手机厂商:华为
手机机型:nova5 pro
页面类型:vue
vue版本:vue2
打包方式:云端
操作步骤:
见bug描述
预期结果:
正常保存
实际结果:
不正常
bug描述:
// 可以正常保存
uni.setStorage({
key: 'version',
data: "123",
success: function() {
console.log('success');
}
});
http.get("/data/version/").then(result => {
// 没反应,不成功也不报错
uni.setStorage({
key: 'version',
data: "123",
success: function() {
console.log('success');
}
});
})
更多关于uni-app uni.setStorage 无效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
7 回复
http.get("/data/version/").then 确定执行了吗?
更多关于uni-app uni.setStorage 无效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
执行了,拿到了最新的值。以前我也没有留意,今天测试的时候发现不行。
回复 口哨呼啸: uni.setStorage 中用 fail 看下有没有错误信息
回复 爱豆豆: 没有,成功失败都捕捉不到信息。关键写在外面的都可以。用console.log也可以
回复 口哨呼啸: 感觉是你请求封装的问题 你能发一个可以复现这个问题的demo吗
同一楼,用.catch(e) 捕获一下异常看看
根据你的描述,问题可能出在异步请求后的存储操作上。以下是可能的原因和解决方案:
- 异步上下文问题: 在http.get的then回调中执行setStorage时,可能由于上下文变化导致存储失败。建议检查网络请求是否成功返回:
http.get("/data/version/").then(result => {
console.log('请求结果:', result); // 先确认请求是否成功
uni.setStorage({
key: 'version',
data: "123",
success: () => console.log('存储成功'),
fail: (err) => console.error('存储失败:', err)
});
}).catch(err => {
console.error('请求失败:', err);
});
-
存储大小限制: 检查要存储的数据是否过大,App端有10MB的存储限制。
-
权限问题: 确认应用有存储权限,特别是在Android 14上需要检查权限设置。
-
改用同步方法尝试:
try {
const result = await http.get("/data/version/");
uni.setStorageSync('version', "123");
console.log('存储成功');
} catch (e) {
console.error('出错:', e);
}