场景需求:咨询问题时,每次收到新的消息或发送消息后页面自动滚动到底部
使用scroll-view组件, 设置scroll-into-view 在底部写一个容器并且设置id 在js data中定义toView并设置默认值底部容器id
<scroll-view scroll-y="true" scroll-into-view="{{toView}}" scroll-with-animation="true" wx:if='{{doctorInfo}}' class="inquiry-swiper">
<dialogue-box inquiry-info='{{inquiryInfo}}' role='{{1}}'></dialogue-box>
<view id="toView" class="pb-100"></view>
</scroll-view>
然后每次接受到消息的时候就this.setData 赋值底部容器id
this.setData({
toView:"toView"
})
但是如果你的页面还是不能滚动,以下是微信小程序scroll-view的scroll-into-view无效问题解决办法:
scroll-into-view 指向得view得id 须要再整个页面加载完后才有效,所以再列表得数组赋值完后,再给 scroll-into-view指向得变量赋值才行。另外 scroll-view 得高度也必须给一个指定得值,不然滚动条无法移动。
scroll-view默认跟view是一样的,只是一个view容器,默认会随着内容大小自动改变大小。只有当你的scroll-view的大小,小于其内的内容时,才有机会实现真正的滚动。所以,你必须设置固定的宽高,如果不设置,那与滚动相关的功能都不会有。看似可以滚动,那个不是scroll-view的,而是window本身的滚动。造成了错觉。既然如此,很多人设置了100%的高度,依然不行,这里必须设置固定的高度如400rpx之类的,不支持%单位。我这里设置
.inquiry-swiper{
width: 100%;
height: 100vh;
}
参考:https://blog.csdn.net/weixin_44028979/article/details/110391672 https://www.jianshu.com/p/f040e5395395