key-value本地数据存储
app、小程序、web,均提供了方便的key-value模式的本地数据存储,通过键值对的方式存取数据。
uni-app的Storage在不同端的实现不同:
- H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理
- App端为原生storage,无大小限制,不是缓存,是持久化的
- 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。
- 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
- 支付宝小程序单条数据转换成字符串后,字符串长度最大200*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。
- 百度小程序策略详见
- 抖音小程序策略详见
Android
端采用应用内SQLIte数据库储存,每个基座对应一个数据库文件,储存位置为:/data/data/io.dcloud.uniappx(基座包名)/databases/DCStorage,同基座内的不同应用,以表名区分。
注意
uni-
、uni_
、dcloud-
、dcloud_
为前缀的key,为系统保留关键前缀。如uni_deviceId
、uni_id_token
,请开发者为key命名时避开这些前缀。 - 非App平台清空Storage会导致uni.getSystemInfo获取到的deviceId改变
uni.setStorage(options)
uni.setStorage函数定义
将数据存储在本地storage存储中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。
setStorage 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
options | SetStorageOptions | 是 | - | - | |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | key | string | 是 | - | - | 本地存储中的指定的 key | data | any | 是 | - | - | 需要存储的内容,只支持能通过 JSON.stringify 序列化的对象 | success | (res: SetStorageSuccess) => void | 否 | - | - | uni.setStorage成功回调函数定义 | fail | (res: UniError) => void | 否 | - | - | uni.setStorage失败回调函数定义 | complete | (res: any) => void | 否 | - | - | uni.setStorage完成回调函数定义 |
|
参见
uni.setStorageSync(key, data)
uni.setStorageSync函数定义
将 data 存储在本地storage存储中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
setStorageSync 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
key | string | 是 | - | - | 本地storage存储中的指定的 key |
data | any | 是 | - | - | 需要存储的内容,只支持能通过 JSON.stringify 序列化的对象 |
WARNING
参数 data
为对象字面量时,需要通过 as UTSJSONObject
明确类型,例如:
参见
uni.getStorage(options)
uni.getStorage函数定义
从本地存储中异步获取指定 key 对应的内容。
getStorage 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
options | GetStorageOptions | 是 | - | - | |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | key | string | 是 | - | - | 本地存储中的指定的 key | success | (res: GetStorageSuccess) => void | 否 | - | - | uni.getStorage成功回调函数定义 | fail | (res: UniError) => void | 否 | - | - | uni.getStorage失败回调函数定义 | complete | (res: any) => void | 否 | - | - | uni.getStorage完成回调函数定义 |
|
GetStorageSuccess 的属性值
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
data | any | 否 | - | - | key 对应的内容 |
参见
注意:获取一个不存在的 key 会触发 fail 回调,返回错误信息为 "getStorage:fail data not found" 的错误。
uni.getStorageSync(key)
uni.getStorageSync函数定义
从本地存储中同步获取指定 key 对应的内容。
getStorageSync 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
key | string | 是 | - | - | 本地存储中的指定的 key |
返回值
参见
注意:同步方法获取一个不存在的 key 会返回空字符串,而不是 null
uni.getStorageInfo(options)
uni.getStorageInfo函数定义
异步获取当前 storage 的相关信息。
getStorageInfo 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
options | GetStorageInfoOptions | 是 | - | - | |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | success | (res: GetStorageInfoSuccess) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.getStorageInfo成功回调函数定义 | fail | (res: UniError) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.getStorageInfo失败回调函数定义 | complete | (res: any) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.getStorageInfo完成回调函数定义 |
|
GetStorageInfoSuccess 的属性值
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
keys | Array<string> | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 当前 storage 中所有的 key |
currentSize | number | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 当前占用的空间大小, 单位:kb |
limitSize | number | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 限制的空间大小, 单位:kb |
参见
uni.getStorageInfoSync()
uni.getStorageInfoSync函数定义
同步获取当前 storage 的相关信息。
getStorageInfoSync 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
返回值
类型 | 描述 |
GetStorageInfoSuccess | uni.getStorageInfo成功回调参数 |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | keys | Array<string> | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 当前 storage 中所有的 key | currentSize | number | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 当前占用的空间大小, 单位:kb | limitSize | number | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 限制的空间大小, 单位:kb |
|
参见
uni.removeStorage(options)
uni.removeStorage函数定义
从本地存储中异步移除指定 key。
removeStorage 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
options | RemoveStorageOptions | 是 | - | - | |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | key | string | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 本地存储中的指定的 key | success | (res: RemoveStorageSuccess) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.removeStorage成功回调函数定义 | fail | (res: UniError) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.removeStorage失败回调函数定义 | complete | (res: any) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.removeStorage完成回调函数定义 |
|
参见
uni.removeStorageSync(key)
uni.removeStorageSync函数定义
从本地存储中同步移除指定 key。
removeStorageSync 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
key | string | 是 | - | - | 本地存储中的指定的 key |
参见
uni.clearStorage(option?)
uni.clearStorage函数定义
清除本地数据存储。
clearStorage 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
option | ClearStorageOptions | 否 | - | - | uni.removeStorage参数定义 |
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 | success | (res: ClearStorageSuccess) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.clearStorage 成功回调函数定义 | fail | (res: UniError) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.clearStorage 失败回调函数定义 | complete | (res: any) => void | 否 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| uni.clearStorage 完成回调函数定义 |
|
参见
uni.clearStorageSync()
uni.clearStorageSync函数定义
清除本地数据存储。
clearStorageSync 兼容性
Web | 微信小程序 | Android | iOS |
4.0 | 4.41 | 3.9.0 | 4.11 |
参见
示例
hello uni-app x
通用类型
GeneralCallbackResult
名称 | 类型 | 必备 | 默认值 | 兼容性 | 描述 |
errMsg | string | 是 | - |
Web
|
微信小程序
|
Android
|
iOS
| - | 4.41 | - | - |
| 错误信息 |