小程序
小游戏
企业微信
微信支付
扫描小程序码分享
scrollview组件顶部追加新数据时滚动条会直接跳到顶部,而如果在底部追加新数据滚动条不会跳变。想实现类似微信聊天页面向下滑动拉取历史消息,但拉取完历史消息后不要直接跳转到顶部。目前小程序的scrollView会直接跳转到顶部了。
https://developers.weixin.qq.com/s/awlzC9mW7Q5l
20 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
同样遇到该问题
1、第一次使用 wx.createSelectorQuery();获取加载前第一个消息view的top值,然后 setData({ scrollTop: _scrollTop}),scroll-view会闪烁一次
2、第二次使用 scroll-view 的 scroll-into-view 的属性,但是任然有一次闪烁,体验很差
建议官方去查看 antd-mobile 中的 ListView,同样的在顶部插入新DOM,滚动条会保持在原先的位置上,并且页面不会闪烁,用户无感,体验很好
望官方快快解决该问题
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
用 useRef 去追踪 scrollTop 的值,伪代码:
function Page() { const scrollTop = React.useRef(); function handleScroll(event) { scrollTop.current = event.detail.scrollTop; } return <ScrollView onScroll={handleScroll} scrollY={true} scrollTop={scrollTop.current} /> }
我把整个scroll-view上下颠倒,然后把里面每个元素也上下颠倒,这下下拉刷新,就利用的是下拉加载更多。。。这样就不会都抖动了,只是比较猥琐。。大家可以参考,还有其他优雅的办法么?
给scrollview添加srollIntoView属性:
<
scroll-view
scrollY
bindscrolltoupper
=
"loadChatHistory"
scrollIntoView
"{{toview}}"
>
每次加载完新数据都更新一下这个值
that.setData({
chat_content: chat_content,
toview:
"m"
+ (chat_content.length - 1)
});
你好,谢谢你的回复,我的代码片段里已经加了scrollIntoView属性了,但是往上下载的时候会先到顶部然后跳转到指定的scrollIntoView位置,可以打开我的代码片段看看例子,非常感谢
有新的进展么
我加了个scrollTop就可以了,每次加载数据前设置下
可以用js方法处理,
<scroll>
<view id="view">
<view wx:for="list"></view>
</view>
</scroll>
比如往后添加的元素后,获取id=view元素高度,然后在修改scroll-top 值,这样就能实现往后添加一个元素,自动滚动到左后一行,这样就实现微信聊天的功能
有大佬解决这个问题的吗?
想问下解决了吗
去掉pagingEnable可以修复
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
同样遇到该问题
1、第一次使用 wx.createSelectorQuery();获取加载前第一个消息view的top值,然后 setData({ scrollTop: _scrollTop}),scroll-view会闪烁一次
2、第二次使用 scroll-view 的 scroll-into-view 的属性,但是任然有一次闪烁,体验很差
建议官方去查看 antd-mobile 中的 ListView,同样的在顶部插入新DOM,滚动条会保持在原先的位置上,并且页面不会闪烁,用户无感,体验很好
望官方快快解决该问题
用 useRef 去追踪 scrollTop 的值,伪代码:
function Page() { const scrollTop = React.useRef(); function handleScroll(event) { scrollTop.current = event.detail.scrollTop; } return <ScrollView onScroll={handleScroll} scrollY={true} scrollTop={scrollTop.current} /> }
我把整个scroll-view上下颠倒,然后把里面每个元素也上下颠倒,这下下拉刷新,就利用的是下拉加载更多。。。这样就不会都抖动了,只是比较猥琐。。大家可以参考,还有其他优雅的办法么?
给scrollview添加srollIntoView属性:
<
scroll-view
scrollY
bindscrolltoupper
=
"loadChatHistory"
scrollIntoView
=
"{{toview}}"
>
每次加载完新数据都更新一下这个值
that.setData({
chat_content: chat_content,
toview:
"m"
+ (chat_content.length - 1)
});
你好,谢谢你的回复,我的代码片段里已经加了scrollIntoView属性了,但是往上下载的时候会先到顶部然后跳转到指定的scrollIntoView位置,可以打开我的代码片段看看例子,非常感谢
有新的进展么
我加了个scrollTop就可以了,每次加载数据前设置下
可以用js方法处理,
<scroll>
<view id="view">
<view wx:for="list"></view>
</view>
</scroll>
比如往后添加的元素后,获取id=view元素高度,然后在修改scroll-top 值,这样就能实现往后添加一个元素,自动滚动到左后一行,这样就实现微信聊天的功能
有大佬解决这个问题的吗?
想问下解决了吗
去掉pagingEnable可以修复