我最近一直在 Svelte 上尝试写手机端的 web app ,有这么几种方案:
离开列表前,在 sessionStorage 里记录位置,返回时读取位置,滚动到之前保存的位置;
这种方法有几个问题:首先,每次切换 view 时,之前的 view 实例被销毁,加载新的 view, 然后加载数据。这种情况下,从详情回到列表页,需要知道之前滚动到了第几页。
而翻页又有起码两种实现方式,一种是往下滚动的时候不停地加载后面的页面,view 上保留着所有页面数据的内容;另一种是无论怎么滚动都只保留前一页、当前页和后一页的 3 页内容。如果用的是第一种方式,那么每次回到列表,都要加载完所有页面,然后再调用 window.scrollTo()
滚动到目标位置。试想想翻了 100 多页的情况,这显然不合理;如果用的是第二种方式,嗯… 实现起来会复杂很多,倒也不是不行。
离开 view 之前不让 view 实例销毁,而是隐藏起来。这样回来之后,自然恢复到原来的状态,但是这种方式需要路由或者框架本身的支持。而且如果离开列表的目标不是去查看详情,而是修改数据,回来之后还得刷新被修改的数据,似乎也不好搞。
想请教一下大家平时都是怎么处理这个问题的?
或者,web app 的开发有其它替代方案来解决这种编辑之后回不到原来位置问题,而不是在这一种方案的实现上死磕?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.