云开发页面间利用缓存传值慢一步,求解。
发布于 5 年前 作者 xshao 8781 次浏览 来自 问答

云开发在做订单信息查询的页面,页面间的传值采用缓存传值的方式,如下面代码所示。但是在传值时遇到了问题:__第一次查询时查询到4条信息,传至B页面时也是4条;第二次查询是20条信息,传至B页面还是第一次查询的4条;第三次查询是19条,传至B页面的还是第一次查询的4条。以上第二次和第三次查询都是在模拟器页面直接点击左上角的“<”后退返回的查询页面。第四次查询使用了control+R刷新了一下,结果查询的结果是4条,但传的值确实第三次的19条信息。__因此感觉是1、第一次的缓存一直存在,没有被每次的wx.setStorageSync覆盖。2、control+r刷新了,上一次的值传了过来。3、传值始终慢了一步,除非第一次传值。第一次查询:

第二次查询(页面后退):

第三次查询(页面后退):

第四次查询(control+r刷新):

另外:设置了清楚缓存按钮,也起不到作用。求解。缓存传值方式:

/* A页面**/
 wx.setStorageSync('searchlist', searchdata)
/* B页面**/
var searchstorage =  wx.getStorageSync('searchlist');

查询页面js:

clearstorage: function (e) {
   wx.clearStorageSync()
   console.log("是否清楚了缓存",aaa)
 },
 
 
formSubmit: function (e) {
 
  console.log('form发生了submit事件,携带数据为:', e.detail.value)
 
  var city = e.detail.value.city;
  var name = e.detail.value.name;
  var operationStartDate = e.detail.value.operationstartdate;
  var operationEndDate = e.detail.value.operationenddate;
  var inputStartDate = e.detail.value.inputstartdate +' '+ '00:00:00';
  var inputEndDate = e.detail.value.inputenddate + ' ' + '23:59:59';
  var phone = e.detail.value.phone;
  var ccc = e.detail.value.aaa
 
  console.log('输入输出时间', inputStartDate, inputEndDate)
   
 
  if (ccc == false) {
 
    console.log(' 不搜索', ccc),
 
    wx.getUserInfo({
      success(res) {
        var nickname = res.userInfo.nickName;
 
        const _ = db.command
        db.collection('orderlist').where(_.and([
          { name: _.eq(name) },
          { phone: _.eq(phone) },
          { inputtime: _.gte(inputStartDate).and(_.lte(inputEndDate)) },
 
        ]))
          .get({
            success(res) {
              var searchdata = res.data;
              wx.setStorageSync('searchlist', searchdata)
              console.log('searchlist是', searchdata)
              wx.navigateTo({
                url: '/pages/searchlist/searchlist',
              })

            

以下省略

显示页面js:

// miniprogram/pages/searchlist.js
 
 
var searchstorage =  wx.getStorageSync('searchlist');
 
Page({
  
  data: {
    listData: searchstorage
  },
 
  onLoad: function (options) {
    console.log('显示界面是否收到缓存', searchstorage)
 
  },
回到顶部