uniapp uni.setstoragesync刷新就没有了是怎么回事?
我在uniapp中使用uni.setStorageSync存储数据,但发现页面刷新后数据就丢失了。请问这是什么原因?如何解决?
2 回复
uniapp中uni.setStorageSync存储的数据在页面刷新后消失,是因为它存储在内存中,属于临时存储。若需持久化,请改用uni.setStorage异步存储或将数据保存至本地数据库/服务器。
uni.setStorageSync 是 UniApp 中用于同步将数据存储到本地的 API,存储的数据在应用关闭后重新打开仍然存在。如果你发现刷新后数据丢失,通常由以下原因导致:
常见原因及解决方案
1. 存储失败(最常见)
try {
uni.setStorageSync('key', 'value')
console.log('存储成功')
} catch (e) {
console.error('存储失败:', e)
}
2. Key 值不一致
存储和读取时使用了不同的 key:
// 存储
uni.setStorageSync('userInfo', {name: '张三'})
// 读取(错误示例 - key 不一致)
let data = uni.getStorageSync('userinfo') // 注意大小写
3. 数据类型问题
存储了不支持的数据类型:
// 错误示例
uni.setStorageSync('key', undefined) // 可能存储失败
// 正确做法
if (data !== undefined && data !== null) {
uni.setStorageSync('key', data)
}
4. 存储空间不足
检查存储空间:
try {
uni.setStorageSync('test', 'data')
} catch (e) {
if (e.message.includes('QUOTA_EXCEEDED_ERR')) {
console.log('存储空间不足')
// 清理部分数据
uni.removeStorageSync('someKey')
}
}
完整示例
// 存储数据
function saveData() {
try {
const userData = {
name: '张三',
age: 25,
token: 'abc123'
}
uni.setStorageSync('userData', userData)
console.log('数据存储成功')
} catch (e) {
console.error('存储失败:', e)
}
}
// 读取数据
function getData() {
try {
const data = uni.getStorageSync('userData')
if (data) {
console.log('读取到的数据:', data)
return data
} else {
console.log('无存储数据')
return null
}
} catch (e) {
console.error('读取失败:', e)
return null
}
}
调试建议
- 使用
try-catch捕获异常 - 在存储后立即读取验证
- 检查浏览器/手机存储权限
- 使用
uni.getStorageInfoSync()查看存储信息
如果问题持续存在,请提供更多具体信息,如错误提示、运行环境等。

