小程序中在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 每次打开页面都会调用一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值