You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue实现仅更新数据的闪烁效果(类似Chrome DevTools绘制闪烁)

实现数组元素更新时的局部闪烁动画

我明白你的需求了——你想在直接更新数组元素(不管是替换整个项还是修改单个属性)的时候,只让被修改的那一行出现类似Chrome DevTools的闪烁效果,而不是用splice触发<transition-group>的进入/离开动画(毕竟那会导致整个列表DOM不必要地更新)。

下面是基于你现有代码的具体实现方案:

1. 改造子组件,添加状态监听与动画触发逻辑

我们可以在子组件内部监听props的变化,一旦检测到props更新,就给当前行添加一个闪烁的CSS类,等动画结束后再移除它:

<template id="test-component">
  <tr :class="{ 'flash': isFlashing }">
    <td>{{name}}</td>
    <td>{{size}}</td>
    <td>{{weight}}</td>
  </tr>
</template>

<script>
Vue.component('test-component', {
  template: '#test-component',
  props: {
    name: String,
    size: Number,
    weight: Number
  },
  data() {
    return {
      isFlashing: false
    }
  },
  watch: {
    // 深度监听所有props的变化,只要有属性更新就触发闪烁
    '$props': {
      deep: true,
      handler() {
        this.isFlashing = true;
        // 动画时长和CSS保持一致,结束后移除类名,避免重复触发时失效
        setTimeout(() => {
          this.isFlashing = false;
        }, 500);
      }
    }
  }
})
</script>

2. 添加闪烁效果的CSS样式

你可以保留原来的fade过渡类(用于列表增删的动画),同时新增这个模拟DevTools的闪烁动画:

/* 原有的列表增删过渡动画(可选保留) */
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}

/* 新增元素更新时的闪烁动画 */
@keyframes flash {
  0% { background-color: rgba(255, 235, 59, 0.3); } /* 淡黄色背景,模拟DevTools闪烁 */
  100% { background-color: transparent; }
}

.flash {
  animation: flash 0.5s ease-out;
}

3. 调整父组件的数据更新逻辑

你当前用Vue.set替换数组项的方式是可行的,不过如果只是更新单个属性(比如size),直接修改也能触发响应式更新(因为key不变,不会触发<transition-group>的进入/离开):

setInterval(function() {
  // 方式1:替换整个数组项(你原来的写法)
  // Vue.set(app.itemList, 0, {id:0, name:'A', size: app.itemList[0].size +1, weight:10 });
  
  // 方式2:直接更新单个属性(更高效)
  app.itemList[0].size += 1;
}, 3000)

方案原理说明

  • 子组件通过watch监听自身props的变化,只要props更新,就触发本地的闪烁动画,完全不会影响整个列表的DOM结构。
  • <transition-group>的原有动画依然可以用于列表的增删操作,和局部闪烁效果互不冲突。
  • 闪烁动画是纯CSS实现,性能优异,只会作用在被修改的那一行,不会导致整个列表重绘。

这样就能完美实现你想要的效果:每次更新数组元素时,只有被修改的那一行会出现闪烁,不会触发整个列表的DOM更新或不必要的过渡动画。

内容的提问来源于stack exchange,提问作者Jayground

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:31:19