1***@qq.com
1***@qq.com
  • 发布:2022-06-11 22:55
  • 更新:2024-03-01 11:16
  • 阅读:2111

nvue 聊天场景中使用 list cell在下拉加载历史消息时如何保持滚动位置?

分类:nvue

nvue 聊天场景中使用 list cell在下拉加载历史消息时如何保持滚动位置?

下拉加载历史消息 将历史消息数据 unshift到list前 会导致滚动条跳到页面顶部 类似的需求很多 为什么官方不出一个解决办法?

下面是我这段时间来试过的所有相关办法

1: Weex cell组件的keep-scroll-position属性看上去可以完美的解决这个问题 但是很可惜uni-app并没有实现此属性
2:使用 dom.scrollToElement()跳回之前的位置 这种方法可以解决问题 但是体验极其差劲 页面会明显的闪烁
3:将list 和 cell 使用css翻转看起来可以完美解决这个问题 但是在某些场景下依然不合适

致辞曲线救国失败 放弃治疗 希望哪位大佬能够指点迷津

2022-06-11 22:55 负责人:无 分享
已邀请:
DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

完美解决方案请参考:uni-im
APP端nvue下list组件 cell组件支持:keep-scroll-position
非APP端,是将“插入数据”行为存到列队,当滚动条为非0高度值时再执行列队的任务

  • note744917

    已学习并解决,感谢

    2023-03-02 11:42

  • 5***@qq.com

    有没有这个保持位置的单独的思路和代码

    2023-03-20 15:52

  • 布朗

    回复 note744917: 请教下聊天消息cell配置keep-scroll-position无效,HB版本3.7.3,你是怎么处理加载历史消息页面不滚动到顶的

    2023-03-21 14:14

  • note744917

    回复 布朗: cell的循环上必须设置 key,并且不能使用index作为key,我当时是忽略了这个问题才导致不生效的。

    2023-03-23 21:26

  • 7***@qq.com

    回复 note744917: HBX版本3.7.9,<cell keep-scroll-position="true" v-for="(item, index) in list" :key="'card' + index">还是未生效

    2023-04-07 15:29

  • 2***@qq.com

    当滚动条为非0高度 这个条件如果滑动稍微快一点就不行了

    2023-08-28 17:57

  • DCloud_uniCloud_JSON

    回复 2***@qq.com: 参考 uni-im,把 push 消息加到 task,等滚动结束再把滚动条设置为非0 然后再 push

    2023-08-30 15:22

  • wzw60606

    回复 DCloud_uniCloud_JSON: 用的scroll-view的模式,这个方法在安卓有效,实现无缝下拉加载历史数据,但是ios app中,增加数据之后都会把旧数据顶下去,请问如何解决这个问题

    2023-09-28 10:11

  • wzw60606

    回复 w***@163.com: scroll-anchoring这个属性好像在app端无效?

    2023-09-28 10:11

  • DCloud_uniCloud_JSON

    回复 w***@163.com: app 端有keep-scroll-position,参考 uni-im

    2023-09-28 11:00

  • 1***@qq.com

    回复 DCloud_uniCloud_JSON: 安卓没效果呢 3.8.7版本

    2023-12-14 15:14

  • DCloud_uniCloud_JSON

    回复 1***@qq.com: 直接跑的示例项目,还是自己抄的没抄好

    2023-12-14 16:01

  • 1***@qq.com

    回复 DCloud_uniCloud_JSON: keep-scroll-position这个属性在ios上不生效的

    2023-12-29 22:36

  • 帅先突破

    有没有这个保持位置的单独的思路和代码

    2024-03-01 11:27

1***@qq.com

1***@qq.com (作者)

插件市场里标榜即时通讯的项目这么多 其实又有几个做的能有正常用户体验的 反正我还没有发现 即时通讯实现功能很简单 好用的即时通讯并不是那么简单 官方uni-im客服系统作为一个网页端的即时通讯做成这样(可以在插件市场体验一下) 移动端的体验可想而知 作为一个前端框架 uni-im更应该体现即时通讯前端的实现技巧 你再封装个云函数或者啥的没有意义

Neveregret

Neveregret

顶一下,这个问题希望官方重视起来

  • 1***@qq.com (作者)

    哎 不抱太大希望

    2022-06-12 15:22

  • Neveregret

    回复 1***@qq.com: 没事就过来顶顶,官方一定会解决的

    2022-06-12 19:50

  • 1***@qq.com (作者)

    回复 Neveregret: 哈哈 我已经预料到 很多同学会说 上面提及的第三种方式 因为他看起来最完美 但也只是看起来

    2022-06-13 17:05

苏陌
  • 1***@qq.com (作者)

    谢谢 这个方法我在上面第三条已经写过了 在群聊的场景下并不能解决问题

    2022-06-13 17:02

  • 3***@qq.com

    回复 1***@qq.com: 第三个翻转的方法,在数据添加时候是往头部添加数据,在列表渲染会有undefined的问题,尤其是快速unshift数据的时候,很容易出现这个渲染问题,但是快速push数据并不会出现这个渲染问题

    2024-03-26 15:10

6***@qq.com

6***@qq.com

这个问题解决了吗

  • DCloud_uniCloud_JSON

    看置顶评论。另外官方正在开发uni-im,之后会开源

    2022-08-03 21:21

  • 7***@qq.com

    回复 DCloud_uniCloud_JSON: uni-in还没搞出来啊,这么久了

    2022-09-17 16:52

  • 7***@qq.com

    uni-im

    2022-09-17 16:53

  • DCloud_uniCloud_JSON

    回复 7***@qq.com: uni-im已应用在插件市场作为客服功能,处于内部试用阶段。你可以先加IM内测QQ群:854520009

    2022-09-19 11:18

2***@qq.com

2***@qq.com

解决了吗,我看uni-im出来了。但是配合云服务搭建的,我目前只想要这个效果,但是集成不到我的项目

  • DCloud_uniCloud_JSON

    uni-im 支持服务端为非uniCloud(比如:应用服务端的开发语言是php、java、go、.net、python、c#等)或 不基于uni-id-pages 开发的项目接入

    2023-02-22 14:37

帅先突破

帅先突破

有解决方案吗

要回复问题请先登录注册