vuejs动态添加数据,滚动条滚动到底部问题

发布于 2022-09-04 09:05:59 字数 527 浏览 27 评论 0

背景

在使用vue动态添加数据时,和聊天的功能比较相似,想的是新来一条信息添加到聊天的底部,然后滚动条滚到底

原因

功能实现比较简单, 但是现在的问题是, 因为vue视图渲染和取DOM之间有一个时间差,导致取DOM的时候,元素还没有渲染出来,所以取到的scrollHeight不足

现象

每次来新数据,底部显示永远是倒数第二条,想看最后一条,需要滚动一下才行,这样显然不行

尝试解决

在滚动代码document.getElementById('myData').scrollTop = document.getElementById('myData').scrollHeight;加一个延迟,但是会出现别外一个问题,就是滚动条有跳跃

演示地址

http://runjs.cn/code/brhbnugd

最后:求解决方案,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

掌心的温暖 2022-09-11 09:05:59
watch: {
    items() {
        document.getElementById('myData').scrollTop = document.getElementById('myData').scrollHeight;
    }
}
帅的被狗咬 2022-09-11 09:05:59
watch: {
    messages() {
      this.$nextTick(() => {
        let list = this.$els.xx
        list.scrollTop = list.scrollHeight
      })
    }
  }
生生漫 2022-09-11 09:05:59

watch 你的数据 绑定你的 scroll操作

深巷少女 2022-09-11 09:05:59

跟题主遇到了同样的问题,用上面几个答案给的watch方法依然解决不了,想来大概是因为watch监测的也只是数据变化,最后用update钩子函数解决了:

updated: function(){
      document.getElementById('myData').scrollTop = document.getElementById('myData').scrollHeight;
  }

Vue2.x亲测有效。

一口甜 2022-09-11 09:05:59

楼主解决了吗?我遇到了同样的问题,如已解决求分享。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文