1***@qq.com
1***@qq.com
  • 发布:2020-05-12 16:28
  • 更新:2021-11-18 17:18
  • 阅读:6844

聊天(IM)界面发消息滚动到底部

分类:uni-app

今天有小伙伴问我,制作(IM)聊天时,发送的聊天消息不能自动滚动,通过一些了算法,随后发现有一些问题,不是很好,问我有没有相关的好的方法。嗯嗯嗯,当然,我这确实有一个比较好的方法。具体如下
原理 利用 scroll-view的scroll-into-view属性
效果图 见附件
具体代码如下

<template>  
    <view class='test'>  
        <scroll-view :scroll-into-view="viewIndex" scroll-view scroll-with-animation='true' :style="{'box-sizing':'border-box', 'padding':'20rpx','height':'200rpx'}"  
         scroll-y="true" class="scroll-Y">  
            <!-- 具体聊天内容 -->  
            <view v-for="(c,i) in chatList" :key="i">  
                {{c}}  
            </view>  

            <!-- 可滚动到底部的view标签 -->  
            <view :id="'im_'+chatList.length" class="bottom"></view>  
        </scroll-view>  
        <view>  
            <button @click="add">添加一行内容</button>  
        </view>  
    </view>  
</template>  
<!--  页面方法 -->  
<script>  
    export default {  
        data() {  
            return {  
                viewIndex: '',  
                chatList: ['你好', '很好'], // 模拟消息记录 为演示滚动效果,此处只有简单的消息信息  
            }  
        },  
        methods: {  
            add() {  
                //模拟发消息添加一条记录  
                this.chatList[this.chatList.length] = "你添加了一行内容" + this.chatList.length;  

                this.viewIndex = "";  
                //设置viewIndex值,使聊天滚动到底部  
                this.$nextTick(() => {  
                    this.viewIndex = "im_" + this.chatList.length;  

                })  
            }  
        },  
    }  
</script>  
<style scoped>  
    .bottom {  
        width: 100vw;  
        height: 20rpx;  
    }  
</style>  
7 关注 分享
wwkAwxr 1***@qq.com 东方来客 1***@163.com okingtaozi shamshing TestWZ

要回复文章请先登录注册

1***@qq.com

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

回复 z***@163.com :
最好将聊天内容组件化,这样,会比较快一些,如果消息什么的写道一个页面,确实会有这样的问题。QQ 1427953302
2020-05-28 09:55
z***@163.com

z***@163.com

有联系方式吗? 咨询一下这块,输入框 input 输入完后,返回,键盘收回延时特别严重,基本上2秒左右
2020-05-26 02:05
1***@qq.com

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

如果对你有用,请亲们点个赞~_~!
2020-05-13 11:08