当前位置: 首页 > news >正文

uniapp聊天界面滚动到底部

uniapp中scroll-view聊天界面滚动到底部展示最新消息

自我记录

技术实现方案: 通过scroll-into-view 指定ID滚动到指定区域并添加scroll-with-animation动画
目前我一共两种方式:
方案1:在scroll-view 底部放置一个空标签 每次发送消息||接收消息就滚动到底部
方案2:前提条件(我这边与后端交互是我发送完消息他那边处理之后统一给我本人消息+客服消息)
所以因为交互时间问题,我这边会生成一个临时对话消息push到数组最后一项,接收到消息在pop并push新数据
最终就是我在生成临时数据时写好一个id 就实现了 滚动到指定id(好处是不用在页面底部放置空标签)坏处是频繁操作数组,由于业务场景问题没办法!

方案一

<scroll-viewscroll-yclass="scroll-view-main"@scroll="onScroll"scroll-with-animation:scroll-into-view="scrollId"
>
<!-- xxxxx 消息内容 -->
<!-- xxxxx 消息内容 -->
<!-- xxxxx 消息内容 -->
<!-- xxxxx 消息内容 --><!-- 显示最新消息 --><view id="msg-001"/>
</scroll-view>

发送消息后调用+接收消息时调用
注意在接收数据赋值之后 记得要有 await nextTick() 为了确保dom更新之后在滚动

// 滚动指定元素ID
const scrollId = ref<string>()// 处理滚动位置事件
const handleScrollLocation = async (id: number | undefined) => {scrollId.value = id ? `msg-${id}` : undefinedawait nextTick()scrollId.value = undefined
}// 发送消息公共方法
const handleSendCommon = (val: string) => {infoParams.value.question = val// 创建临时数组const TEMP_ITEM: ChatWriteMsgItem = {messageId: 999,role: 'user',message: val,createTime: moment().format('YYYY-MM-DD hh:mm:ss'),}handleScrollLocation(TEMP_ITEM.messageId)handleChatWrite()
}

如有转载 请备注原文地址!


http://www.mrgr.cn/news/14635.html

相关文章:

  • 基于Spark的云南旅游大数据分析平台
  • electron 两个渲染进程之间通信
  • 微服务框架一
  • GPT-4.0 新手使用教程(保姆级入门)
  • mysql数据表管理
  • 算法: 双指针
  • Web前端性能优化合集
  • 智能优化特征选择|基于鹦鹉优化(2024年新出优化算法)的特征选择(分类器选用的是KNN)研究Matlab程序 【优化算法可以替换成其他优化方法】
  • 各行各业的都有的文档推荐
  • 通过智能温控系统介绍嵌入式中PID控制、模糊控制、自适应控制的算法(代码示例)
  • 浅谈【数据结构】栈和队列之栈
  • AI大模型:开源与闭源的激烈交锋与未来展望
  • 人工智能 | AutoGPT理念与应用
  • 云计算day35
  • ceph-rgw zipper的设计理念(1)
  • Git Clone
  • PHP同城派送多区域运营配送小程序源码
  • 数据结构(邓俊辉)学习笔记】串 16——Karp-Rabin算法:串即是数
  • chrome cookie编辑
  • 鸿蒙开发入门day15-焦点事件