用 Vue 写列表页/详情页 的一个常见的需求,大神们都是如何解决的?

2021-05-23 14:17:50 +08:00
 wuhaoworld

比如一个管理后台,列表页展示所有文章,包括标题、作者、发布时间等。 点击文章标题进入详情页,可以对文章进行编辑,可以编辑后返回列表页,也可以直接返回列表页。

因为文章列表很长,从文章详情页返回列表页需要保持其滚动条位置,还有其他组件的状态,所以对列表页设置了 keep-alive 。

如果不做其他控制对话,修改 /删除文章后,返回列表页,刚刚编辑的文章还是以原来的名称显示,并没有更新。

网上看到一种方案,是说一旦编辑或修改,再返回列表页时,在 beforeRouteLeave 回调中,让列表页的 keep-alive 设为 fasle,但这样整个列表页都被刷新了,之前的状态并没被保留,我期望即使文章被编辑后,返回列表还能保留之前的滚动条位置以及其他组件的状态,同时列表页显示最新的文章标题及内容。

暂没有用 Vuex,大家是如何解决这个问题的?

4428 次点击
所在节点    Vue.js
22 条回复
dfkjgklfdjg
2021-05-25 15:42:09 +08:00
详情页修改之后使用 eventBus 通知列表修改对应 id 的记录之中 title, notice 之类需要展示数据。
或者返回功能使用 $router.replace 替换 $router.push,通过 params 对象传递 id 以及 title 之类的属性,在列表页激活的时候去修改对应记录。
liuchengfeng1
2021-11-05 11:10:12 +08:00
我也遇到过你这样的问题,做了一个记录;
http://blog.musclewiki.cn/post/187?cid=51&search=%E7%BC%93%E5%AD%98&index=search

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/778669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX