做法
建立一個 AppAnimatedNumber 元件,並接收 count 屬性。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 
 | <template><span
 v-text="number.toLocaleString()"
 />
 </template>
 
 <script>
 export default {
 name: 'AppAnimatedNumber',
 props: {
 count: {
 type: Number,
 default: 0,
 },
 },
 data() {
 return {
 interval: null,
 number: 0,
 };
 },
 created() {
 this.number = this.count;
 },
 watch: {
 count() {
 clearInterval(this.interval);
 if (this.count === this.number) {
 return;
 }
 this.interval = setInterval(() => {
 let change = (this.count - this.number) / 10;
 change = change >= 0 ? Math.ceil(change) : Math.floor(change);
 this.number += change;
 }, 1000 * 0.1);
 },
 },
 };
 </script>
 
 |