28-uniapp数据缓存storage

644 阅读2分钟

一般用来保存页面公开数据或者页面搜索记录等数据,用户登录信息也存在这里面

uni.setStorage(OBJECT)异步接口

这个接口对应uni.getStorage,一个设置,一个获取

uni.setStorageSync(KEY,DATA)同步接口

这个接口对应 uni.getStorageSync,一个设置,一个获取

将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容(如果存的值key是一样的,第二个value会覆盖第一个value)

这两个方法最大的区别是,异步接口是返回一个success,同步的接口是定义变量

在首页测试uni.setStorage异步接口

onLoad() {
      // setTimeout(()=>{},1500)
      uni.setStorage({
        key: "demo",
        data:112,
        success:res=>{
          console.log(res);
        }
      })
},

设置成功 image.png

测试同步接口uni.setStorageSync(KEY,DATA)

这个一般用的多一些

onLoad() {
  uni.setStorageSync("my_key", "hello");
},

[之前设置的值依然在,重新刷新页面甚至重新打开浏览器都还在] image.png

获取之前存储的值

onLoad() {
      uni.setStorageSync("my_key", "hello");
      let mykey = uni.getStorageSync("my_key");
      console.log(mykey);
},

image.png

获取存储的值既可以在当前页面,也可以在其他页面

上面是在当前页面存储和获取,现在测试在user页面获取首页存储的值,将获取缓存数据的方法写在onload中,一点开页面就能被自动执行

    onLoad(){
      uni.setTabBarBadge({
        // 这是要显示数字的tabbar的索引,给哪一项加
        index:2,
        text:"3"
      }),
      uni.showTabBarRedDot({
        index:1
      })
      let key = uni.getStorageSync("my_key")
      console.log(key);
    }

image.png

如果保存的值是一个数组或者对象,也能拿到值,如果是原生的写法,是不能存储数组或对象的,存进去需要用JSON.stringify()进行转换

uni.setStorageSync("my_key", {name:"张三",age:20});

image.png

uni.removeStorageSync(KEY)

uni.clearStorageSync()

从本地缓存中同步移除指定 key。删除保存的缓存数据

这两个api的区别是remove是清除某一项,clear是全部清空

写一个按钮,用点击事件清理缓存数据

onLoad() {
      uni.setStorageSync("my_key", {name:"张三",age:20});
       uni.setStorageSync("my_key1", {name:"李四",age:30});
      let mykey = uni.getStorageSync("my_key1");
      console.log(mykey);
		},
		methods: {
      removeBtn(){
        uni.removeStorageSync("my_key")
},

点击按钮之前 image.png

点击按钮之后,有一条数据被删掉了 image.png