请问小程序页面跳转的时候,能不刷新页面吗?类似返回上一页的效果?

作者站长头像
站长
· 阅读数 9
uni.navigateBack({
    delta: 1, //返回层数,2则上上页
})

我在 A 页面这样点击跳转返回上一页B页面,B 页面数据不会被刷新,但是我从 B 页面点击进入 A 页面的时候,页面就会被刷新。

请问:如何让前进、后退都能保持页面不被刷新?

回复
1个回答
avatar
test
2024-07-15

可以确定的是使用 uni.navigateTo() 是肯定会触发组件全部生命周期的。

而小程序的页面栈是有上限的。也就是说超出了这个上限,即使你使用的是楼上的先判断是否在页面堆栈中已经存在,再通过 uni.navigatoBack() 方法去返回也会刷新页面。因为页面存在是会有内存消耗的,小程序不会任意你缓存全部页面的。

所以不该操心的事情就别纠结了。应该去触发页面请求的就让她触发。

如果真的想要做到无感刷新,你可以把已经请求回来的数据保存在本地缓存,每次先去判断本地缓存中是否已经存在了,如果存在就直接读取并载入。但是这样并不友好因为缓存在本地的数据是脱机的,也就是说数据失去了时效性。这并不是一个很好的用户体验。用户在一段时间内查看到的数据都是陈旧的。


App会缓存就是另外一回事情了,已经不是Web前端的范畴了。你也可以多尝试几款APP会发送网络请求的,你也都会看到他们其实都会去Loading。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容