资讯专栏INFORMATION COLUMN

Vue中消息横向滚动时,滚动速度越来越快的问题

hiYoHoo / 1719人阅读

摘要:解决方式当消息滚动到盒子边缘销毁定时器时将其赋值为,然后修改中央事件的事件监听将其判断没有定时器的条件修改为然后满足条件的调用消息滚动函数。

最近在做项目时,需要进行两个组件联动,一个轮询获取到消息,然后将其传递给另外一个组件进行横向滚动展示,结果滚动的速度越来越快。这里记录一下来提醒自己。消息滚动的代码在最下面,方便下次使用。

问题背景: 最近在做一个需求,组件A获取消息采用的是轮询,组件A获取到新的消息后,将组件A中的消息传递给另外一个组件B,当组件B接收到消息时就让消息在页面上滚动播放。

实现思路: 这个项目应用的框架为VUE,当组件A获取到新的消息之后,就触发中央事件总线,在组件B中进行事件监听,将其添加进入一个数组,当判断定时器没有运动时,就触发滚动的函数。消息滚动的函数是从消息数组中提取出第一条,然后利用定时器进行消息滚动,当消息滚动到边缘时清除定时器。

问题:消息在滚动的过程中,该开始还能够按照给定的速度进行滚动,可是当时间变长后就会出现消息滚动的速度越来越快的问题。

原因:当出现这个问题时,我第一个念头就是setInterval没有被清掉,因为当定时器没有清掉之后又再次调用定时器就会导致多个定时器同时执行,比如第一次是一个计时器,再点一下是就是两个定时器,这时候每次就是+2,所以速度不断提升。我看了一下我设置的滚动函数,里面当消息滚动到边缘时,就清除这个定时器,所以在滚动函数中没有问题。我又看了下中央事件总线的事件监听器,发现问题在这里。因为我在判断一个定时器是否被销毁时,直接判断其类型是 数字 还是 null,由于当定时器开始运行时,每一次返回的都是一个ID(数字),而不是一开始的对象,导致当一条消息开始滚动时,又接收到一条新的消息,然后就使得两个定时器同时运行,从而出现这个问题。

解决方式:当消息滚动到盒子边缘销毁定时器时,将其赋值为null,然后修改中央事件的事件监听,将其判断没有定时器的条件修改为null,然后满足条件的调用消息滚动函数。

横向滚动的代码:

    
    
    
        
        
        
        Document
        
    
    
        
123

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106878.html

相关文章

  • 基于better-scroll的vue滚动组件

    摘要:让用户可以滚动页面。事件中拿到想要的后浏览器已经隐藏地址栏和工具栏,放开插件滚动。发现派发的方法在父组件中监听后获取位置参数的效果不太好必须要手指贴着滑动才可以这个设置为可以实时派发滚动事件和位置参数其他坑点待发现欢迎大佬一起交流 写在前面 由于最近一个移动端项目中许多地方有滚动需求, 横向,纵向的都有,所以就基于better-scroll封装了一个通用的滚动组件,期间也踩了一些坑,有...

    xiaotianyi 评论0 收藏0
  • vueTable大数据展示优化

    摘要:懒加载方式常见的有淘宝一屏用元素占据一定的高度,然后再去拉图片数据。但这种方式还是需要元素占位,淘宝一页的数据量其实不算大,因为它结合了分页。 背景 showImg(https://segmentfault.com/img/bVbhSVh?w=1606&h=440);大数据项目根据用户输入代码查询数据,用户的代码不可控(比如select from db limit 5000),有可能...

    JasinYip 评论0 收藏0
  • 基于React与Redux的留言墙的实现

    摘要:设计本次留言墙分为两部分。活动展示部分为匿名留言墙形式后改为实名制,需要根据收到的留言墙进行向上平滑滚动,如果没有消息接收则停止在最后一条消息上。主要为处理数据的数据层。 背景 由于某事业群需要留言墙用于年会,同时需要调用大象公众号服务器接口,所以在今年年初开发了留言墙用于活动现场交流。 设计 本次留言墙分为两部分。一部分为活动展示部分,另一部分为后台审批部分。 活动展示部分为匿名留言...

    MockingBird 评论0 收藏0
  • vue better-scroll 遇到的坑

    摘要:先看效果介绍一个简单的静态页面主要是使用做横向滚动,点击标签滚动到相应位置,以及滚到相应位置后对应标签显示红色。 先看效果 showImg(https://segmentfault.com/img/bVbqAdC?w=374&h=626); 介绍 一个简单的静态页面主要是使用 better-scroll 做横向滚动,点击标签滚动到相应位置,以及滚到相应位置后对应标签显示红色。开发过程中...

    yiliang 评论0 收藏0
  • IOING在开发SPA大型应用有哪些必要的技术条件?

    摘要:是一款高性能的前端开发引擎。这些功能模块的被放置在一起时,将很难避免相互影响,造成难以测试的。结尾的文档目前还不够完善,但完全可以满足必要的开发。 前言 之前公众号《前端早读课》推了我的文章(在这里表示感谢),很多同学有在底下留言,问我 Ionic 和 IOING 是什么关系?从名字来看两者的开头虽然都是 IO 打头但其实两者毫无关系,一丁点儿都没有。 IOING 是一款高性能的前端开...

    glumes 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<