当前位置: 首页 > news >正文

uniapp数据缓存

 利用uniapp做开发时,缓存数据是及其重要的,下面是同步缓存和异步缓存的使用

同步缓存

在执行同步缓存时会阻塞其他代码的执行

① uni.setStorageSync(key, data)

设置缓存,如:

uni.setStorageSync('name', '张三')

② uni.getStorageSync(key)

获取缓存,如:

uni.getStorageSync('name')

③ uni.removeStorageSync(key)

移除缓存,如:

uni.removeStorageSync('name')

④ uni.clearStorageSync()

清空所有缓存,如:

uni.clearStorageSync()

⑤ uni.getStorageInfoSync()

获取缓存更详细的信息,正如缓存中所有的key,如:

let res = uni.getStorageInfoSync()
//  取出缓存中所有的key,数组形式,如['name','age', ...]
let allStorageKeys = res.keys

异步缓存

异步缓存不会阻塞代码的执行,但是需要利用回调的特点,即执行成功之后要执行的代码放success中,失败的代码放fail中,一定要执行的代码放complete中

① uni.setStorage(OBJECT)

设置缓存,如:

uni.setStorage({key: 'name',data: '张三'
})

② uni.getStorage(OBJECT)

获取缓存,如:

uni.getStorage({key: 'name',success: (storage) => {//  获取key对应的valueconsole.log('value: ', storage.data)}
})

③ uni.removeStorage(OBJECT)

移除缓存,如:

uni.removeStorage({key: removeAsyncKey.value
})

④ uni.clearStorage()

清空所有缓存,如:

uni.clearStorage()

⑤ uni.getStorageInfo(OBJECT)

获取缓存更详细的信息,正如缓存中所有的key,如:

uni.getStorageInfo({success: (res) => {//  取出缓存中所有的key,数组形式,如['name','age', ...]let allStorageKeys = res.keysconsole.log(allStorageKeys)}
})

uniapp案例

页面如下:

以下是用Vue3语法写的uniapp测试缓存的代码

<template><view class="root"><view class="asyncStorageBox"><view class="title"><text>异步缓存</text></view><view class="set"><text>key: </text><input type="text" v-model="setAsyncKey" /><text>value: </text><input type="text" v-model="setAsyncValue"/><button @click="setAsyncStorage">设置缓存</button></view><view class="remove"><text>key: </text><input type="text" v-model="removeAsyncKey"/><text style="visibility: hidden;">value: </text><input type="text" style="visibility: hidden;"/><button @click="removeAsyncStorage">清除缓存</button></view><view class="get"><text>key: </text><input type="text" v-model="getAsyncKey"/><text>value: </text><input type="text" disabled="false" style="border-style: none;" v-model="getAsyncValue"/><button @click="getAsyncStorage">获取缓存</button></view><view class="getAll"><view class=""><button @click="getAsyncAllStorage">所有缓存</button><button type="warn" @click="clearAsyncAllStorage">清空缓存</button></view><textarea name="" id="" cols="30" rows="6" disabled="false" v-model="computeAllAsyncKeyValue"></textarea></view></view><view class="syncStorageBox"><view class="title"><text>同步缓存</text></view><view class="set"><text>key: </text><input type="text" v-model="setSyncKey"/><text>value: </text><input type="text" v-model="setSyncValue"/><button @click="setSyncStorage">设置缓存</button></view><view class="remove"><text>key: </text><input type="text" v-model="removeSyncKey"/><text style="visibility: hidden;">value: </text><input type="text" style="visibility: hidden;"/><button @click="removeSyncStorage">清除缓存</button></view><view class="get"><text>key: </text><input type="text" v-model="getSyncKey" /><text>value: </text><input type="text" disabled="false" style="border-style: none;" v-model="getSyncValue"/><button @click="getSyncStorage">获取缓存</button></view><view class="getAll"><view class=""><button @click="getSyncAllStorage">所有缓存</button><button @click="clearSyncAllStorage" type="warn">清空缓存</button></view><textarea name="" id="" cols="30" rows="6" disabled="false" v-model="computeAllSyncKeyValue"></textarea></view></view></view>
</template>
​
<script setup>import {} from '@dcloudio/uni-app'import { computed, ref } from 'vue';//  异步缓存数据const setAsyncKey = ref('')const setAsyncValue = ref('')const removeAsyncKey = ref('')const getAsyncKey = ref('')const getAsyncValue = ref('')const allAsyncKeyValue = ref({})const computeAllAsyncKeyValue = computed(() => JSON.stringify(allAsyncKeyValue.value))/*** 异步缓存key、value*/function setAsyncStorage() {uni.setStorage({key: setAsyncKey.value,data: setAsyncValue.value})}/*** 异步获取数据*/function getAsyncStorage() {uni.getStorage({key: getAsyncKey.value,success: (storage) => {getAsyncValue.value = storage.data}})}/*** 异步清除缓存*/function removeAsyncStorage() {uni.removeStorage({key: removeAsyncKey.value})}/*** 异步清空所有缓存*/function clearAsyncAllStorage() {uni.clearStorage()}/*** 异步查询出所有缓存*/function getAsyncAllStorage() {uni.getStorageInfo({success: (res) => {let allStorageKeys = res.keysallAsyncKeyValue.value = {}for (let k of allStorageKeys) {uni.getStorage({key: k,success: (storage) => {allAsyncKeyValue.value[k] = storage.data}})}}})}//  同步缓存数据const setSyncKey = ref('')const setSyncValue = ref('')const removeSyncKey = ref('')const getSyncKey = ref('')const getSyncValue = ref('')const allSyncKeyValue = ref({})const computeAllSyncKeyValue = computed(() => JSON.stringify(allSyncKeyValue.value))/*** 同步缓存key、value*/function setSyncStorage() {uni.setStorageSync(setSyncKey.value, setSyncValue.value)}/*** 同步获取数据*/function getSyncStorage() {getSyncValue.value = uni.getStorageSync(getSyncKey.value)}/*** 同步清除缓存*/function removeSyncStorage() {uni.removeStorageSync(removeSyncKey.value)}/*** 同步清空所有缓存*/function clearSyncAllStorage() {uni.clearStorageSync()}/*** 同步查询出所有缓存*/function getSyncAllStorage() {let res = uni.getStorageInfoSync()console.log(res)let allStorageKeys = res.keysallSyncKeyValue.value = {}for (let k of allStorageKeys) {allSyncKeyValue.value[k] = uni.getStorageSync(k)}}</script>
​
<style lang="scss">.root {display: flex;flex-direction: column;.asyncStorageBox{display: flex;flex-direction: column;border: 1px solid black;margin-bottom: 20rpx;}.syncStorageBox{display: flex;flex-direction: column;border: 1px solid black;}.title {text-align: center;font-weight: bold;}.set {display: flex;flex-direction: row;input {margin-left: 20rpx;width: 150rpx;padding-left: 10rpx;border: 1px dotted #aaa;}button {height: 70rpx;line-height: 70rpx;margin-top: -10rpx;}margin: 30rpx 0;}.getAll{display: flex;margin-bottom: 20rpx;textarea {border: 1px solid black;width: 60%;margin-left: 50rpx;}button {height: 100rpx;margin-bottom: 50rpx;}}.get {display: flex;flex-direction: row;input {margin-left: 20rpx;width: 150rpx;padding-left: 10rpx;border: 1px dotted #aaa;}button {height: 70rpx;line-height: 70rpx;margin-top: -10rpx;}margin: 30rpx 0;}.remove {display: flex;flex-direction: row;input {margin-left: 20rpx;width: 150rpx;padding-left: 10rpx;border: 1px dotted #aaa;}button {height: 70rpx;line-height: 70rpx;margin-top: -10rpx;}margin: 30rpx 0;}}
</style>

http://www.lryc.cn/news/475223.html

相关文章:

  • HarmonyOS-权限管理
  • Github 2024-11-02 Rust开源项目日报 Top10
  • 修改HarmonyOS鸿蒙图标和名字,打包后安装到真机,应用图标丢失变成透明,修改名字也不生效,还是默认的labeL解决方案教程
  • unreal engine5动画重定向
  • 蓝桥杯练习笔记(二十-日期问题)
  • jenkins 构建报错 mvn: command not found
  • Vue computed watch
  • 【java】java的基本程序设计结构06-运算符
  • 数据建模圣经|数据模型资源手册卷3,数据建模最佳实践
  • Kafka相关知识点(上)
  • network HCIE认证
  • 造纸粉体分散机、改性包覆机、改性打散机
  • npm入门教程1:npm简介
  • Vue3使用AntV | X6绘制流程图:开箱即用
  • grpc 快速入门
  • layui 实现 城市联动
  • C++11标准模板(STL)- 常用数学函数 - 分类及比较 - 对给定的浮点值分类(std::fpclassify)
  • 报错:npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
  • OpenCV基本操作(python开发)——(7)实现图像校正
  • [项目] C++基于多设计模式下的同步异步日志系统
  • Vue常用的修饰符有哪些?
  • AnatoMask的分层图像编码器-解码器
  • 面向对象编程的核心特性:封装、继承、多态与抽象
  • ubuntu openmpi安装(超简单)
  • Python中的SQL数据库管理:SQLAlchemy教程
  • LeetCode --- 421周赛
  • 简单了解前缀树/字典树(Trie树)C++代码
  • ubuntu安装与配置Nginx(2)
  • Linux环境下Mongodb部署
  • (九)JavaWeb后端开发——Servlet