#Uniapp:数据缓存uni.setStorage、uni.setStorageSync、uni.getStorage、uni.getStorageSync、uni.getStorageInfo..

本文详细介绍了uni-app中的数据缓存功能,包括setStorage、getStorage、setStorageSync、getStorageSync、removeStorage、clearStorage等接口的使用方法、参数说明以及不同平台的存储差异。特别提到了H5、App端以及各小程序端的存储策略和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uni-数据缓存官网

uni.setStorage(OBJECT)

将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。

OBJECT 参数说明

参数名类型必填说明
keyString本地缓存中的指定的 key
dataAny需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例

uni.setStorage({
	key: 'storage_key',
	data: 'hello',
	success: function () {
		console.log('success');
	}
});

复制代码

注意

  • uni-uni_dcloud-dcloud_为前缀的key,为系统保留关键前缀。如uni_deviceIduni_id_token,请开发者为key命名时避开这些前缀。

uni.setStorageSync(KEY,DATA)

将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

参数说明

参数类型必填说明
keyString本地缓存中的指定的 key
dataAny需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象
try {
	uni.setStorageSync('storage_key', 'hello');
} catch (e) {
	// error
}

uni.getStorage(OBJECT)

从本地缓存中异步获取指定 key 对应的内容。

OBJECT 参数说明

参数名类型必填说明
keyString本地缓存中的指定的 key
successFunction接口调用的回调函数,res = {data: key对应的内容}
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数类型说明
dataAnykey 对应的内容

示例

uni.getStorage({
	key: 'storage_key',
	success: function (res) {
		console.log(res.data);
	}
});

uni.getStorageSync(KEY)

从本地缓存中同步获取指定 key 对应的内容。

参数说明

参数类型必填说明
keyString本地缓存中的指定的 key

示例

try {
	const value = uni.getStorageSync('storage_key');
	if (value) {
		console.log(value);
	}
} catch (e) {
	// error
}

uni.getStorageInfo(OBJECT)

异步获取当前 storage 的相关信息。

平台差异说明

AppH5微信小程序支付宝小程序百度小程序
HBuilderX 2.0.3+

OBJECT 参数说明

参数名类型必填说明
successFunction接口调用的回调函数,详见返回参数说明
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数类型说明
keysArray<String>当前 storage 中所有的 key
currentSizeNumber当前占用的空间大小, 单位:kb
limitSizeNumber限制的空间大小, 单位:kb

示例

uni.getStorageInfo({
	success: function (res) {
		console.log(res.keys);
		console.log(res.currentSize);
		console.log(res.limitSize);
	}
});

复制代码

#uni.getStorageInfoSync()

同步获取当前 storage 的相关信息。

平台差异说明

AppH5微信小程序支付宝小程序百度小程序
HBuilderX 2.0.3+

示例

try {
	const res = uni.getStorageInfoSync();
	console.log(res.keys);
	console.log(res.currentSize);
	console.log(res.limitSize);
} catch (e) {
	// error
}

复制代码

#uni.removeStorage(OBJECT)

从本地缓存中异步移除指定 key。

OBJECT 参数说明

参数名类型必填说明
keyString本地缓存中的指定的 key
successFunction接口调用的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

示例

uni.removeStorage({
	key: 'storage_key',
	success: function (res) {
		console.log('success');
	}
});

复制代码

#uni.removeStorageSync(KEY)

从本地缓存中同步移除指定 key。

参数说明

参数名类型必填说明
keyString本地缓存中的指定的 key

示例

try {
	uni.removeStorageSync('storage_key');
} catch (e) {
	// error
}

复制代码

#uni.clearStorage()

清理本地数据缓存。

示例

uni.clearStorage();

复制代码

#uni.clearStorageSync()

同步清理本地数据缓存。

示例

try {
	uni.clearStorageSync();
} catch (e) {
	// error
}

复制代码

注意

uni-app的Storage在不同端的实现不同:

  • H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理
  • App端为原生的plus.storage,无大小限制,不是缓存,是持久化的
  • 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。
  • 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
  • 支付宝小程序单条数据转换成字符串后,字符串长度最大200*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。
  • 百度小程序策略详见、抖音小程序策略详见
  • 非App平台清空Storage会导致uni.getSystemInfo获取到的deviceId改变

除此之外,其他数据存储方案:

  • H5端还支持websql、indexedDB、sessionStorage
  • App端还支持SQLiteIO文件等本地存储方案。

从HBuilderX2.6.6+起,App-Android平台对本地storage数据存储进行了性能优化,老用户升级注意事项,详见:https://ask.dcloud.net.cn/article/37071。新用户无需关心。

<think>好的,我现在需要帮用户解答在UniApp中使用uni.getStorageSync方法的问题。首先,我得回忆一下uni-app的存储API,特别是同步方法的使用。记得uni.getStorageSync是用来同步获取本地存储数据的,和异步的uni.getStorage不同,它直接返回结果,不需要回调函数。 用户可能需要知道基本用法,比如参数和返回值。根据引用[4]中的示例,方法需要传入一个key,也就是'storage_key',然后返回对应的值。如果不存在可能会返回空或者抛出异常,所以错误处理也很重要,需要用try...catch包裹。 然后,用户可能需要示例代码。引用[4]里的例子已经展示了如何获取并处理值,我可以直接参考这个结构,写出一个更详细的例子,比如获取用户名的场景。同时,要提到可能出现的错误,比如存储空间不足或者key不存在时的处理。 还需要注意同步和异步方法的区别,用户可能不清楚什么时候用同步,什么时候用异步。同步方法会阻塞后续代码执行,适合快速简单的操作,而异步适合需要处理复杂逻辑或者避免阻塞的情况。这点需要解释清楚。 另外,相关API的链接也很重要,用户可能需要查看官方文档,所以引用[3]中的链接应该包含进去。同时,可以提到其他相关方法,比如setStorageSync和removeStorageSync,这样用户能全面了解存储相关的操作。 最后,生成相关问题的时候,要考虑用户可能进一步想知道如何存储数据、删除数据或者同步异步的区别。这些问题可以帮助用户更深入地学习UniApp的存储机制,提升他们的开发能力。 检查一下是否有遗漏的点,比如参数类型,是否必须用try...catch,以及错误处理的具体情况。确保回答覆盖了基本用法、示例、注意事项和相关链接,结构清晰,用户能一步步跟着操作。同时保持语言简洁,符合中文习惯,不使用Markdown格式,行内公式正确,没有独立公式。</think>### UniApp中`uni.getStorageSync`方法使用说明 #### 1. 方法功能 `uni.getStorageSync`用于**同步获取**本地存储的指定`key`对应的值。该方法属于uni-app数据缓存API的同步方法,直接返回存储内容,无需回调函数[^3][^4]。 #### 2. 语法格式 ```javascript const value = uni.getStorageSync('storage_key'); ``` #### 3. 参数说明 | 参数 | 类型 | 必填 | 说明 | |-------------|--------|------|--------------------| | key | String | 是 | 本地缓存中指定的key | #### 4. 使用示例 ```javascript try { const username = uni.getStorageSync('user_name'); if (username) { console.log('获取的用户名:', username); } else { console.log('未找到用户信息'); } } catch (e) { console.error('读取缓存失败:', e); } ``` #### 5. 注意事项 - **同步特性**:会阻塞后续代码直到操作完成,建议简单场景使用,复杂逻辑推荐异步方法`uni.getStorage` - **错误处理**:必须使用`try...catch`包裹,可捕获`超过存储大小限制`等异常[^2] - **数据类型**:支持原生类型、对象、数组等(通过JSON自动序列化/反序列化) #### 6. 相关API - 存储数据:`uni.setStorageSync('key', value)`[^1] - 删除数据:`uni.removeStorageSync('key')`[^2] - 清空缓存:`uni.clearStorage()` > 官方文档参考:[uni-app数据缓存API](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstoragesync)[^3]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值