写点什么

跨平台应用开发进阶 (十) :uni-app 实现数据存储、获取和删除

  • 2022 年 5 月 21 日
  • 本文字数:1103 字

    阅读完需:约 4 分钟

跨平台应用开发进阶(十) :uni-app 实现数据存储、获取和删除

一、前言

项目开发过程中,需要实现数据的全局存储、获取及删除操作。为此,阅读了 uni-app 官方文档,发现其已经内置方法实现以上功能。

二、应用示例

<template>  <view class="content">    <button type="primary" @click="setStorage">存储数据</button>    <button type="primary" @click="getStorage">获取数据</button>    <button type="primary" @click="delStorage">删除数据</button>  </view></template> <script>  export default {    methods: {      setStorage() {        uni.setStorage({          key: 'name',          data: 'uniapp',          success() {            console.log('存储数据')          }        })      },      getStorage() {        uni.getStorage({          key: 'name',          success(res) {            console.log('获取成功', res.data)          }        })      },      delStorage() {        uni.removeStorage({          key: 'name',          success() {            console.log('删除成功')          }        })      }    }  }</script> <style>  .content {    display: flex;    flex-direction: column;    align-items: center;    justify-content: center;  }</style>
复制代码


注⚠️:如果是同步存储、获取、删除,可以使用setStorageSync()getStorageSync()removeStorageSync(),达到的效果是一样的。


那么,有童鞋会问setStorage()setStorageSync()都可以存储全局变量,两者又有什么区别呢?如何根据不同的应用场景去应用不同方法呢?


首先,官方文档给出的方法定义如下:




​从接口定义可以看出,setStorage()异步接口可以接口调用后回调相关方法,主要是根据业务需求来判定使用哪种方法。


以 Sync(同步,同时)结尾的都是都是同步缓存,二者的区别是,异步不会阻塞当前任务,同步缓存直到同步方法处理完才能继续往下执行。


通俗点说,异步就是不管保没保存成功,程序都会继续往下执行。同步是等保存成功了,才会执行下面的代码。使用异步,性能会更好;而使用同步,数据会更安全。


它们都是将数据存储在本地缓存指定的 key 中,单个 key 最大数据长度为 1MB,所有数据存储上限为 10MB。


在使用setStorageSyncsetStorage时,发现setStorageSync不能传入对象:


uni.setStorageSync({    key: 'siteMessage',  data: provider})
复制代码


setStorageSync只支持原生类型、Date、及能够通过JSON.stringify序列化的对象,不能直接传入对象。否则报错:


setStorage:fail parameter error: parameter should be String instead of Object;

三、拓展阅读

发布于: 刚刚阅读数: 2
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
跨平台应用开发进阶(十) :uni-app 实现数据存储、获取和删除_uni-app_No Silver Bullet_InfoQ写作社区