uni-app本地存储

目录

概要

一,存储数据

二,获取数据

三,移除数据

技术细节

小结


概要

大家好,今天和大家分享一下uni-app中的本地存储,其中分为同步和异步,有些朋友可能也在这两个概念中迷惑过,下面我们就来讲讲这个本地存储。

一,存储数据

1.uni.setStorage(OBJECT)

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

OBJECT参数

参数名 类型 必填 说明
key String 本地缓存中的指定的 key
data Any 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象
success Function 接口调用成功的回调函数

|----------|----------|---|--------------------------|
| fail | Function | 否 | 接口调用失败的回调函数 |
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
| 示例 | | |

复制代码
uni.setStorage({
    key:"token",
    data:'123456',
    success: function (){
        console.log("存储成功")
    }
})

2.uni.setStorageSync(KEY, DATA)

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

复制代码
try{
    uni.setStorageSync('token', '123456')
} catch (e){
    //错误
}

//缓存数据
setStorage(){
	//这也是一个同步接口。
	//第一个参数是本地缓存中的指定的 key
	//第二个参数是需要存储的内容
	uni.setStorageSync('id',1);
},

二,获取数据

1.uni.getStorage(OBJECT)

本地存储中异步获取对应可以对应的内容

参数名 类型 必填 说明
key String 本地缓存中的指定的 key
success Function 接口调用的回调函数,res = {data: key对应的内容}
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)
复制代码
uni.getStorage({
    key:"token",
    success: function(res){
        console.log(res.data);
    }
})

2.uni.getStorageSync(KEY)

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

复制代码
try {
    const value = uni.getStorageSync("token");
    if(value) {
        console.log(value)
    }
} catch(e){
    //错误
}

3.uni.getStorageInfo(OBJECT)

异步获取当前Storage的相关信息

参数名 类型 说明
keys Array<String> 当前 storage 中所有的 key
currentSize Number 当前占用的空间大小, 单位:kb
limitSize Number 限制的空间大小, 单位:kb
复制代码
uni.getStorageInfo({
    success: function(res) {
        console.log(res.keys);
        console.log(res.currentSize);
        console.log(res.limitSize);
    }
})

4.uni.getStorageInfoSync()

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

复制代码
try {
    const res = uni.getStorageInfoSync();
    console.log(res.keys);
    console.log(res.currentSize);
    console.log(res.limitSize);
} catch (e) {
    // 错误
}

获取数据同步

复制代码
getStorage(){
	//这是一个同步接口。
	//参数本地缓存中的指定的 key通过赋值给一个变量获取
	const value = uni.getStorageSync('id');
	console.log(value);
},

三,移除数据

1.uni.removeStorage(OBJECT)

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

复制代码
uni.removeStorage({
    key:'token',
    success: function(res){
        console.log('删除成功')
    }
})

2.uni.removeStorageSync(KEY)

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

复制代码
try {
    uni.removeStorageSync('storage_key')
} catch(e){
    //错误
}

3.uni.clearStorage()

清除本地缓存

复制代码
uni.clearStorage();

4.uni.clearStorageSync()

同步清理本地数据缓存

复制代码
try {
	uni.clearStorageSync();
} catch (e) {
	//错误
}

同步移除

复制代码
removeStorage(){
	//这是一个同步接口。
	//参数本地缓存中的指定的 key通过赋值给一个变量获取
	const value = uni.removeStorageSync("id");
	console.log("移除成功");
}

技术细节

其中同步异步的这个问题可以自己打印一下看看,在onShow里面分别使用同步和异步获取数据进行赋值,在其它生命周期内打印,看哪些有值哪些没有值,我之前也是没有意识到这个问题导致出现了一些错误,这个不是this指向的问题,也是容易误解的地方。

需要注意的是,uni-app的本地存储是基于键值对的方式进行存储,可以存储字符串、数字、布尔值、对象等类型的数据。但是,存储的数据大小是有限制的,通常在几MB左右。

另外,uni-app还提供了其他的本地存储方法,例如uni.setStorageuni.getStorage方法的批量操作版本uni.setStorageSync(keyValuePairs)uni.getStorageSync(keys),以及清空本地缓存的方法uni.clearStorageSync()uni.clearStorage()等。

小结

以上就是本章的全部内容了,下一章我打算讲一下这个同步和异步,希望能够帮助到您,谢谢大家。

相关推荐
00后程序员张9 小时前
iOS 上架费用全解析 开发者账号、App 审核、工具使用与开心上架(Appuploader)免 Mac 成本优化指南
android·macos·ios·小程序·uni-app·cocoa·iphone
前端与小赵16 小时前
uni-app开发安卓app时控制屏幕常亮不息屏
android·gitee·uni-app
2501_9160088917 小时前
HTTPS 请求抓包,从原理到落地排查的工程化指南(Charles / tcpdump / Wireshark / Sniffmaster)
ios·小程序·https·uni-app·wireshark·iphone·tcpdump
xiaohe060118 小时前
🥳 Uni ECharts 2.1 发布:正式支持鸿蒙,零成本迁移、全平台兼容、跨端开发零负担!
vue.js·uni-app·echarts
2501_915909061 天前
WebView 调试工具全解析,解决“看不见的移动端问题”
android·ios·小程序·https·uni-app·iphone·webview
2501_915106321 天前
App 怎么上架 iOS?从准备资料到开心上架(Appuploader)免 Mac 上传的完整实战流程指南
android·macos·ios·小程序·uni-app·iphone·webview
行走的陀螺仪1 天前
uni-app + Vue3 实现折叠文本(超出省略 + 展开收起)
前端·javascript·css·uni-app·vue3
小禾青青1 天前
uniapp安卓打包遇到报错:Uncaught SyntaxError: Invalid regular expression: /[\p{L}\p{N}]/
android·uni-app
环信即时通讯云1 天前
实现小程序 uniApp 输入框展示自定义表情包
小程序·uni-app
2501_915921432 天前
iOS 抓不到包怎么办?工程化排查与替代抓包方案(抓包/HTTPS/Charles代理/tcpdump)
android·ios·小程序·https·uni-app·iphone·tcpdump