vue 聊天页面实现滚动条实时滚动至最底部

本文介绍了一种处理聊天记录实时更新的方法:通过监听聊天记录的变化触发DOM更新,并使用Vue.js的nextTick()确保视图更新完毕后,再通过查询选择器获取最新的DOM元素并滚动到指定位置。

1、有聊天记录显示再页面会引起dom数变化,此时使用 nextTick()

2、获取新插入进来的dom

 var container = this.$el.querySelector("#chatContainer>li:last-child");

3、滚动到该位置

container.scrollIntoView();

Vue3实现AI对话界面滚动条滚动底部有以下两种常见方法: ### 使用`scroll-into-view`方法(适用于uni-app(vue3)) 整体思路是利用uni-app的`scroll-into-view`方法,结合Vue的`watch`来监视聊天内容的变化。当聊天内容发生变化时,更新`scroll-into-view`属性所关注的`id`。需要为列表渲染的每一项动态设置一个不重复的`id`。以下是大致逻辑示例代码: ```vue <template> <scroll-view :scroll-into-view="scrollToId" scroll-y="true"> <div v-for="(message, index) in chatMessages" :key="index" :id="&#39;message-&#39; + index"> {{ message }} </div> </scroll-view> </template> <script setup> import { ref, watch } from &#39;vue&#39;; const chatMessages = ref([]); const scrollToId = ref(&#39;&#39;); // 模拟添加消息 const addMessage = (message) => { chatMessages.value.push(message); }; // 监视聊天内容变化 watch(chatMessages, () => { const lastIndex = chatMessages.value.length - 1; scrollToId.value = `message-${lastIndex}`; }); </script> ``` ### 获取滚动条所在的DOM元素 通过获取滚动条所在的DOM元素,在消息发送后将滚动条滚动底部。以下是示例代码: ```vue <template> <div class="chat-container" ref="chatContainer"> <div v-for="(message, index) in chatMessages" :key="index"> {{ message }} </div> </div> <button @click="sendMessage">发送消息</button> </template> <script setup> import { ref } from &#39;vue&#39;; const chatMessages = ref([]); const chatContainer = ref(null); const sendMessage = () => { // 模拟添加消息 chatMessages.value.push(&#39;新消息&#39;); // 在DOM更新后滚动底部 nextTick(() => { chatContainer.value.scrollTop = chatContainer.value.scrollHeight; }); }; </script> <style scoped> .chat-container { height: 300px; overflow: auto; } </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值