美文网首页
vue中this.$nextTick()的使用

vue中this.$nextTick()的使用

作者: 老街老街 | 来源:发表于2019-08-16 00:47 被阅读0次

    vue中this.$nextTick()的使用

    写再前面:刚从事这行时,年少轻狂,啥不懂,拿到需求就是猛干,很少去思考些原理性的东西,脑海中没有一个大致的框架,从头写到尾,写的贼爽,其实这是很忌讳的。现在写代码,思考八分钟,写二分钟。整理出一个通顺思路很重要,很忌讳拿着别人代码就是一通复制粘贴。不逼逼了,很晚了,写完差不多洗洗睡了。

    先看一个例子吧:

    <template>
    <section>
    <div ref="hello">
    <h1>Hello World ~</h1>
    </div>
    <el-button type="danger" @click="get">点击</el-button>
    </section>
    </template>
    <script>
    export default {
    methods: {
    get() {
    }
    },
    mounted() {
    console.log(333);
    console.log(this.refs['hello']); this.nextTick(() => {
    console.log(444);
    console.log(this.refs['hello']); }); }, created() { console.log(111); console.log(this.refs['hello']);
    this.nextTick(() => { console.log(222); console.log(this.refs['hello']);
    });
    }
    }
    </script>

    image.png
    从上面的结果你能看出啥?

    可以看出,在created函数中console.log(this.refs['hello']);输出为null,说明了created钩子是不进行DOM渲染的。但是为什么this.nextTick(callBack)函数里面的this.refs['hello']会打印出来呢?这是因为this.nextTick里面是一个回调函数,当页面加载完之后会回头来执行。

    如果你不理解vue的生命周期函数,那我先讲下吧,清楚的绕过。

    生命周期函数

    created--->mounted--->activated--->destory

    1.created: 期间不进行DOM的渲染。只做前期的数据初始化。只执行一次。

    2.mounted:将编译好的HTML挂载到页面后执行的函数。只执行一次。一般用来进行异步数据的加载,例如Ajax等网络请求。

    3.activated:每次进入页面都执行。

    说到这,我讲下keep-alive吧,这个是一个持久化的标签,就是浏览器会帮你缓存这些组件。缓存意味着下次进入不在渲染DOM。

    相关文章

      网友评论

          本文标题:vue中this.$nextTick()的使用

          本文链接:https://www.haomeiwen.com/subject/ztexsctx.html