Vue实现聊天框实时展示新消息

Vue中内容展示保持在最底部

一、问题

实现和微信QQ聊天相同的功能,打开聊天框或收到新消息,都能实时展示新消息

二、解决办法

使用异步处理setTimeout函数获取最新的scrollHeight
代码如下(示例):

scrollToBottom () {
  this.$nextTick(() => {
    const container = document.getElementById('chat')
      // console.log(container.scrollTop)
      // console.log(container.scrollHeight) // 加上超出的部分一共是1530
      container.scrollTop = container.scrollHeight
      console.log(`点击了添加按钮,更新时间:${new Date()},此时的div.scrollHeight是:${container.scrollHeight}`)
    })
  },
beforeUpdate () {
   const container = document.getElementById('chat')
   console.log(`我被更新Dom之前,更新时间:${new Date()},更新前的div.scrollHeight是:${container.scrollHeight}`)
   container.scrollTop = container.scrollHeight
}
// 添加消息函数
Add () {
  setTimeout(() => {
  	this.$parent.scrollToBottom()
  }, 100)
}
// 在进入页面时,需要显示最新消息
mounted: function () {
  this.getMsg()
    setTimeout(() => {
      this.beforeUpdate()
    }, 100)
  },

在使用Vue框架的时候,有时候需要在Vue在页面数据渲染完成之后调用方法,不然获取不到准确的数据,特别是在获取列表的高度的时候,由于数据没有加载完,获取不到准确的高度。因此采用定时器方法,可以实现在DOM渲染完后得到准确的高度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值