VUE常用知识点

Vue.$nextTick()的使用

2019-04-15  本文已影响34人  洛禾sunshime
<template>
    <div class="nextTick">
        <div ref="msgDiv">{{msg}}</div>
        <button @click="changeMsg">
            Change the Message
        </button>
    </div>
</template>

<script type="text/ecmascript-6">
export default {
    name: "nextTick",
    data() {
        return {
            msg: "Hello Vue."
        };
    },
    methods: {
        changeMsg() {
            this.msg = "Hello World.";
            setTimeout(() => {
                console.log(this.$refs.msgDiv.innerHTML); // Hello World.
            }, 0);
            this.$nextTick(() => {
                console.log(this.$refs.msgDiv.innerHTML); // Hello World.
            });
            console.log(this.$refs.msgDiv.innerHTML); // Hello Vue.(没有改变)
        }
    }
};
</script>

点击按钮之后,发现控制台中this.$nextTick()和setTimeout()都发生了改变

可以发现this.$nextTick和setTimeout的效果是一样的,都是将回调方法放入异步队列中

this.$nextTick是当dom发生变化更新后执行的回调。setTimeout只是一个异步延迟执行

上一篇下一篇

猜你喜欢

热点阅读