本地存储

@Storage

案例分析

早期版本的API,复合数据的保存和存储需要经过序列化 JSON.stringify 和解析 JSON.parse;现在可以直接使用

简介

查看

. 调试器 → Storage

API

保存数据 set

  1. wx.setStorage(Object object)
  2. wx.setStorageSync(string key, any data)
  3. . 保存的时候,必须指定 key 和 data

    . 保存成功,返回 errMsg: "setStorage:ok"

    wx.setStorage({
        key:'msg',
        data:'hi, there.',
        success:res=>console.log(res),
        fail:err=>console.log(err),
        complete:()=>console.log('set done log')
    })

获取数据 get

  1. wx.getStorage(Object object)
  2. wx.getStorageSync(string key)
  3. 获取的时候,必须指定 key

    如果成功,在返回结果的 data 中解析数据

    如果数据不存在,返回 errMsg: "getStorage:fail data not found"

    wx.getStorage({
        key:'msg',
        success:res=>console.log(res),
        fail:err=>console.log(err),
        complete:()=>console.log('get done log')
    })

    建议获取数据 get,使用同步调用,减少异步操作带来的性能损耗

    .如果数据不存在,返回字符串 hi

    getMsgSync() {
        let msg = wx.getStorageSync('msg') || 'hi'
        this.setData({
            msg: msg
        })
    }

    .如果数据不存在,返回对象 {id:100,name:'glpla'}

    getMsgSync() {
        let msg = wx.getStorageSync('msg') || {id:100,name:'glpla'}
        this.setData({
            msg: msg
        })
    }

    .如果数据不存在,返回数组 [0, 1, 2, 3, 4]

    getMsgSync() {
        let msg = wx.getStorageSync('msg') || [0, 1, 2, 3, 4]
        this.setData({
            msg: msg
        })
    }

删除指定数据 remove

  1. wx.removeStorage(Object object)
  2. wx.removeStorageSync(string key)
  3. 删除的时候,必须指定 key

    删除成功,返回 errMsg: "removeStorage:ok"

    wx.removeStorage({
        key: 'msg',
        success:res=>console.log(res),
        fail:err=>console.log(err),
        complete:()=>console.log('remove done log')
    })

清除所有数据 clear

  1. wx.clearStorage(Object object)
  2. wx.clearStorageSync()
  3. 清除成功,返回 errMsg: "clearStorage:ok"

    wx.clearStorage({
        success:res=>console.log(res),
        fail:err=>console.log(err),
        complete:()=>console.log('clear done log')
    })
[] JSON 数据的使用 - 直接存储和获取,无需序列化和解析
wx.setStorage({
    key: 'obj',
    data: {id:100,name:'glpla'},
    success: res => console.log('set',res),
    fail: err => console.log('set',err),
    complete: () => console.log('set done')
})
let obj = wx.getStorageSync('obj') || {id:100,name:'glpla'}