uni.setStorage 详解
uni.setStorage 详解
uni.setStorage
是 UniApp 提供的一个用于本地数据存储的 API,它可以将数据存储在客户端本地缓存中,类似于 Web 开发中的 localStorage
。
基本用法
uni.setStorage({key: 'storage_key',data: '要存储的内容',success: function () {console.log('存储成功');}
});
参数说明
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
key | String | 是 | 本地缓存中指定的 key |
data | Any | 是 | 需要存储的内容,支持原生类型、对象、数组 |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
实际应用示例
1. 存储简单数据
// 存储字符串
uni.setStorage({key: 'username',data: '张三',success: () => {console.log('用户名存储成功');}
});// 存储数字
uni.setStorage({key: 'userAge',data: 25
});
2. 存储对象或数组
// 存储对象
const userInfo = {name: '李四',age: 30,gender: 'male'
};uni.setStorage({key: 'userInfo',data: userInfo
});// 存储数组
const hobbies = ['阅读', '游泳', '编程'];
uni.setStorage({key: 'hobbies',data: hobbies
});
3. 使用异步语法
try {await uni.setStorage({key: 'token',data: 'abcdef123456'});console.log('存储成功');
} catch (e) {console.error('存储失败:', e);
}
相关方法
- uni.getStorage - 从本地缓存中获取指定 key 的内容
- uni.removeStorage - 从本地缓存中移除指定 key
- uni.clearStorage - 清理本地数据缓存
- uni.setStorageSync - setStorage 的同步版本
- uni.getStorageSync - getStorage 的同步版本
注意事项
- 存储限制:单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB
- 数据持久性:除非用户主动删除或调用清除方法,否则数据会一直保留
- 数据类型:存储时会自动将数据转为 JSON 字符串形式,取出时自动转换回来
- 同步与异步:
- 同步方法会阻塞当前任务,直到方法返回
- 异步方法不会阻塞当前任务
最佳实践
- 对于简单的数据存取,可以使用同步方法简化代码
- 对于可能存储失败的重要数据,建议使用异步方法并处理错误
- 存储复杂对象时,建议先进行数据校验
- 敏感信息不建议直接存储在本地缓存中
示例:用户登录信息存储
// 存储登录信息
function saveLoginInfo(user) {return new Promise((resolve, reject) => {uni.setStorage({key: 'loginInfo',data: {userId: user.id,token: user.token,expireTime: Date.now() + 7 * 24 * 60 * 60 * 1000 // 7天后过期},success: resolve,fail: reject});});
}// 获取登录信息
async function getLoginInfo() {try {const res = await uni.getStorage({ key: 'loginInfo' });if (res.data.expireTime > Date.now()) {return res.data;}return null;} catch (e) {return null;}
}
uni.setStorage
是 UniApp 开发中非常实用的数据持久化方案,合理使用可以提升应用的用户体验。