vue中nextTick与JS中setTimeout的用法

问题描述

在vue中,我有以下模板:

<i class="bar" :style="style">
    <i class="dot"></i>
</i>

然后js中的代码如下:

props: {
        progress: {
            type: Number,
            default: function () {
                return 0;
            }
        },
        userInfo: {
            type: Object,
            default: function () {
                return {};
            }
        }
    },
    mounted() {
        let self = this;
        self.$nextTick(() => {
            self.width = self.progress;
        })
        // setTimeout(() => {
        //     this.width = this.progress;
        // })

    },
    computed: {
        style() {
            return {
                width: this.width + '%',
            }
        }
    },

bar的样式有一个宽度变化的动效:

transition: width 0.5s ease;

为什么我使用nextTick没有动效,而使用setTimeout有动效呢?

阅读 7.4k
2 个回答

nextTick:将回调延迟到下次DOM更新循环之后执行
setTimeout:将回调延迟到指定时间之后执行
两者回调执行的前提条件不相同

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题