小程序中在onload里面调用wx.getStorage的问题

本地存储:wx.setStorage,wx.getStorage
(详细使用可以查看api—微信小程序中的数据存储)

比如说有A、B两个页面,要将A页面的数据传到B页面,
在A页面用wx.setStorage存储自己要传的数据

wx.setStorage({
    key: "getAppData",//getAppData是我一个表单的数据
    data: setAppInfo
 })

在B页面显示传过来的数据,一开始我是写在onload里面的

onLoad: function(options) {
    let that=this;
    wx.getStorage({//获取A页面传过来的数据
      key: 'getAppData',
      success(res) {
        console.log(res.data);// res.data  A页面传过来的数据
        that.setData({
          getData: [{
            id: 3,
            name: res.data[0],
            date: res.data[1],
            time: res.data[2],
            longtime: res.data[3],
            tel: '15898620058',
            price: res.data[4],
            tips: res.data[5]
          }]
        })
        // console.log(that.data.getData);
      }
    })
  },

这样弄完后,我发现,页面数据不能随着本地存储的数据改变而改变,
如果是想要更新数据,只能重新编译,但是这样肯定不现实,
后来经过各种查询搜索,发现一个问题,
小程序中的onload页面加载,一个页面只加载一次,
所以后面不管怎么更改本地存储的数据,页面数据都不会同步更新

解决方法:将wx.getStorage写在onshow里面
onshow页面显示,每次打开页面都会都会重新调用一次

onShow: function() {
    let that=this;
    wx.getStorage({
      key: 'getAppData',
      success(res) {
        console.log(res.data);
        that.setData({
          getData: [{
            id: 3,
            name: res.data[0],
            date: res.data[1],
            time: res.data[2],
            longtime: res.data[3],
            tel: '15898620058',
            price: res.data[4],
            tips: res.data[5]
          }]
        })
        // console.log(that.data.getData);
      }
    })
  }

总结:

  • onload 一个页面只加载一次
  • onshow 每次打开页面都会调用一次

你可能感兴趣的:(微信小程序,微信小程序的数据存储)