小程序列表切换较快,不同列表数据重复加载,这个问题怎么解决?
发布于 7 年前 作者 weipan 2251 次浏览 来自 问答

//快速切换头部,列表2的数据,可能会追加到列表1中,列表1的数据没来的及清空。

//头部切换
  onNavBar(e) {
    let navIndex = e.detail.setIndex;
    this.setData({ navIndex, showScreen: false, page: 1, list: [], hasMore: null });
    this.getOrderList();
  },
 
 
//查询用工单审批列表
  getOrderList() {
    let reqData = {};
    let lock = this.data.lock;
    if (lock) {
      return;
    }
    reqData.page = this.data.page;
    reqData.status = this.data.navIndex;
    if (this.data.cdIds) {
      reqData.cdIds = this.data.cdIds;
    }
 
    this.setData({ pageState: 'frame', lock: true })
    orderModel.getList(reqData).then(res => {
      const tempArray = this.data.list.concat(res.resultData.records);
      const dataState = tempArray.length > 0 ? 'finish' : 'empty';
 
      this.setData({
        lock: false,
        list: tempArray,
        pageState: dataState,
        hasMore: res.hasMore
      })
 
    }).catch(err => {
      this.setData({ pageState: 'error', lock: false })
    })
  },


7 回复

给getOrderList加一个参数,如果切换了tab就就const tempArray =res.resultData.records;没切换tab就const tempArray =this.data.list.concat(res.resultData.records);

每setdata一次,调一次


wx.showLoading({

 title: '加载中',

    mask:true

})了解一下。

使用wx:if试试

不能把list分开么?

setData完在去请求列表, setData的回调函数 了解一下

是不是onNavBar中this.setData({list:[]})之后加个if判断,判断list为空后再调用就好了

恕我愚钝,你这加载的list有区别吗?

回到顶部