收藏
回答

小程序中路由切换时如何实现类似keep-alive功能?

用户列表页面:滚动用户列表到底部后(用户列表数据都是准备触底是发送一次请求,并把返回来的数据追加到上一次请求的数据中),点击最后一个用户跳转到用户详情页

 // 跳转用户详情页
  toMedical(e) {
        let vm = this;
        wx.navigateTo({
            url: `../../caseList/caseList`,
            success: () => {
                vm.setData({
                    isBottom: false,
                    pageNum:1
                });
            },
        });
    },
//列表滚动事件
    scrolltolower() {
        if (!this.data.isBottom) {
            //未请求完全部数据时
            this.setData({ pageNum: ++this.data.pageNum });
            this.getList(this.data.pageNum, 16true).then((res) => {
                if ((res.code = 200 && res.rows.length == 0)) {
                    this.setData({ isBottom: true });
                }
            });
        }
    },
onShow() {
       //获取用户列表数据
      this.getList();
    },

用户详情:点击返回键来到用户列表页面,

问:如何保持之前的滚动距离并且保持之前的用户列表数据量

回答关注问题邀请回答
收藏

1 个回答

  • 咖啡有点甜
    咖啡有点甜
    2023-06-21

    你是新开页面跳转至详情页 返回上一级页面 页面内容是保留的呀

    2023-06-21
    有用
    回复 3
    • 媆媆
      媆媆
      2023-06-25
      你这句话给了我启发,这种情况下我应该在onLoad的时候获取列表值而不是在onShow的时候获取列表值,其实还有一种场景:
      用户列表页面:滚动用户列表到底部后,点击最后一个用户跳转到用户详情页
      用户详情:点击删除用户按钮,并返回上一级=》‘用户列表页面’
      如果用户列表页面获取列表数据是在onShow中,当我们从用户详情页到用户列表页面后会重新发送请求获取用户列表。
      如果用户列表页面获取列表数据是在onLoad中,当我们从用户详情页到用户列表页面后还是会保留之前第一次进来以及滚动后获取的数据,但是会有个问题,我们删除的那个用户也会在列表中,因为当前的数据不是最新的
      2023-06-25
      回复
    • 咖啡有点甜
      咖啡有点甜
      2023-06-27回复媆媆
      放在onShow里请求列表没问题,只需要加个条件变量(可以是全局的),正常触发了onShow了只要没有在外部改变(比如你说的在下一级页面删除数据了)这时候切换后台 再切回来不满足条件是不会重新请求,保留在原位置。你在修改数据的地方去改变这个变量,如果有变化则为true,这时候再回到用户列表页面满足条件重新请求,方法不唯一,都是在逻辑上动脑筋就好了
      2023-06-27
      回复
    • Mars
      Mars
      2023-07-28回复媆媆
      你在详情页做了操作后可以获取到上一个页面,然后执行上一个页面的方法。参考getCurrentPages()方法
      2023-07-28
      回复
登录 后发表内容