Number动画组件数值不更新怎么办?
我用 Vue 写了个数字滚动动画组件,但数据变了动画却不触发,一直是初始值。明明 props 传的 number 更新了,watch 也监听到了,可 DOM 上的数字就是不动。
试过加 key 强制刷新,也试过 nextTick 里手动调用动画函数,都不行。是不是我写法有问题?
<template>
<div>{{ animatedValue }}</div>
</template>
<script>
export default {
props: ['number'],
data() {
return { animatedValue: 0 }
},
watch: {
number(newVal) {
this.animateTo(newVal)
}
},
mounted() {
this.animatedValue = this.number
}
}
</script>
看起来是你在
animateTo方法里面没有正确更新animatedValue。你需要确保animateTo方法在每次number变化时都能正确地更新animatedValue。这里有个简单的例子,假设你想用一个简单的线性过渡效果:确保
animateTo方法在watch监听到number变化时被正确调用,并且在requestAnimationFrame循环中更新animatedValue。这样 DOM 才会重新渲染显示最新的值。