Vue 3 watchEffect 怎么实现公告栏滚动播放的自动控制

千瑶姑娘_8849

千瑶姑娘_8849

2026-10-22

726人浏览

原创

watcheffect 用于响应公告数据变化并智能控制滚动启停,监听 notices 长度或末项触发重置/启动,配合 oninvalidate 清理定时器、nexttick 确保 dom 就绪后计算滚动条件,并依据 isautoscrollenabled 和 visibilitystate 动态启用禁用,支持用户交互状态判断避免强制滚动。

vue 3 watcheffect 怎么实现公告栏滚动播放的自动控制

用 watchEffect 实现公告栏滚动播放的自动控制,核心不是直接驱动滚动动画,而是**响应数据变化、协调滚动状态与时机**。它更适合做“智能开关”和“条件触发”,而非替代 requestAnimationFrame 或 CSS 动画本身。

监听公告列表变化,自动启停滚动逻辑

当公告内容数组(如 notices)更新时,watchEffect 能自动感知并重置滚动位置或重启定时器,避免旧数据残留导致错位:

  • 只读取 notices.length 或 notices.at(-1) 即可建立响应式依赖,无需整个数组
  • 在副作用中调用 resetScroll() 或 startScroll(),确保新公告进来后从头开始滚动
  • 配合 onInvalidate 清理上一轮定时器,防止内存泄漏或重复执行

结合 nextTick 确保 DOM 就绪后再滚动定位

公告内容渲染完成前就执行滚动,会导致位置计算错误。watchEffect 配合 nextTick 是可靠方案:

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习