vue 如何确保日志滚动条始终保持在最底下?

2022-06-18 22:20:51 +08:00
 LeeReamond

前端一个 div 展示由 ws 推送来的日志,遇到一个问题是,js 代码发出命令和浏览器实际渲染有一些时间差,如果代码写做

1.更新 v-model 对象
2.将该 div 的滚动条移至最下

这样显然是不好使的,2 会比 1 先执行。理论上这种情况应该适用的是 nexttick ,但是我试了试将 2 加入 nexttick 当中并无效果。最后只能让 2 延迟执行,所以现在每次 v-model 刷新后都要过个几帧才能自动把滚动条移到最下面,强迫症表示很不爽啊。。

1142 次点击
所在节点    问与答
6 条回复
darklights
2022-06-18 23:06:39 +08:00
不懂 vue ,js 和 dom 也是半桶水,不过 vue 应该有办法在 dom 层面添加事件:

new MutationObserver(() => {
yourDiv.scrollTop = yourDiv.scrollHeight;
}).observe(yourDiv, {childList: true});
4ark
2022-06-19 09:23:00 +08:00
真实项目经验,将 div 180° 转换过去,也即最底部其实才是高度为 0 的地方,这样每次 append 都能在咀底部。
4ark
2022-06-19 09:25:48 +08:00
bylocker
2022-06-19 12:09:36 +08:00
vue-chat-scroll
haolongsun
2022-06-19 13:32:34 +08:00
nextTick 能实现的,StackOverflow 一大堆这样的实现。
qrobot
2022-06-20 09:26:12 +08:00
@4ark 你他妈真是个人才。 卧操

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

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

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

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

© 2021 V2EX