最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 你真的了解Vue2.0的生命周期执行顺序吗?

    正文概述 掘金(煮雨、)   2021-03-14   499

    最近面试遇到一个很有意思的问题:

    你知道Vue的同一生命周期在子组件先执行还是父组件先执行?

    可能了解Vue的执行机制的同学就已经知道答案了,不着急说答案,想请你慢慢看完。

    我们来测试一下:

    我们讲讲最重要的俩:created 和 mounted

    我首先创建了两个子组件:CompOne 和 CompTwo,分别在两个组件中写入了mounted方法和created方法。

    <template>
        <div>        
            <h2>子组件1</h2>    
        </div>
    </template>
    <script>    
        export default {
            mounted() {
                console.log("子组件1 —— mounted")
            },
            created() {
                console.log("子组件1 —— created")
            },
        }
    </script>
    
    <template>
        <div>
            <h2>子组件2</h2>
        </div>
    </template>
    <script>
        export default {
            mounted() {
                console.log("子组件2 —— mounted")
            },
            created() {
                console.log("子组件2 —— created")
            },
        }
    </script>
    

    接下来呢,我们把他引到父组件(App.vue)中来看看,当然,在父组件(App.vue)中也有created和mounted方法

    <template>
      <div>
        123
        <CompOne></CompOne>
        <CompTwo></CompTwo>
      </div>
    </template>
    <script>
      import CompOne from "./views/CompOne"
      import CompTwo from "./views/CompTwo"
      export default {
        components:{
          CompOne, CompTwo
        },
        mounted() {
          console.log("App —— mounted")
        },
        created() {
          console.log("App —— created")
        },
      }
    </script>
    

    这时候我们来看看浏览器的输出结果:

    你真的了解Vue2.0的生命周期执行顺序吗?

    结论:

    • 不论子组件有多少,父组件的生命周期created总是先执行的,父组件的生命周期mounted总是最后一个执行的

    • 平级各子组件的生命周期created是接下来执行的,然后是mounted

    这里我引发了一个思考?

        ”调换下组件的位置看看执行结果会是什么样子的?

    看好了,我调换了两个平级子组件的位置:

    <template>
      <div>
        123
        <CompTwo></CompTwo>
        <CompOne></CompOne>
      </div>
    </template>
    

    看看结果:

    你真的了解Vue2.0的生命周期执行顺序吗?

    结论:

    • 平级子组件的同一生命周期执行顺序取决于子组件挂载在父组件中的位置!

    嵌套型(就是俄罗斯套娃啦!)

    上代码:

    //这是第一层父组件(App.vue)
    <template>
      <div>
        <h2>最大父组件(App.vue)</h2>
        <CompOne></CompOne>
      </div>
    </template>
    <script>
      import CompOne from "./views/CompOne"
      export default {
        components:{
          CompOne
        },
        mounted() {
          console.log("App —— mounted")
        },
        created() {
          console.log("App —— created")
        },
      }
    </script>
    
    
    //这是第二层父组件(CompOne.vue)
    <template>
        <div>
            <h2>子组件1</h2>
            <CompTwo></CompTwo>
        </div>
    </template>
    <script>
        import CompTwo from "./CompTwo"
        export default {
            components:{ CompTwo },
            mounted() {
                console.log("子组件1 —— mounted")
            },
            created() {
                console.log("子组件1 —— created")
            },
        }
    </script>
    
    //这是第三层组件,也是最内的一层(CompTwo.vue)
    <template>
        <div>
            <h2>子组件2</h2>
        </div>
    </template>
    <script>
        export default {
            mounted() {
                console.log("子组件2 —— mounted")
            },
            created() {
                console.log("子组件2 —— created")
            },
        }
    </script>
    

    来吧,看看结果,迫不及待~

    你真的了解Vue2.0的生命周期执行顺序吗?

    请仔细看看输出结果,然后再看结论,给大脑一些思维时间 ~~~

    结论:

    不论子组件嵌套多少层,总是最外层(最大的父组件:App.vue)的生命周期created先执行,mounted最后执行,接下来便是向内一层(CompOne.vue)的生命周期created执行,接下来就是再向内一层(也就是第三层)的生命周期created执行,其次第三层的mounted执行,然后就是第二层的mounted了。

    说的一大堆,给你看个输出图你就懂了:

    你真的了解Vue2.0的生命周期执行顺序吗?

    是的,created生命周期又外到内一层层先执行,而mounted生命周期则由内到外接着一层层执行!


    起源地下载网 » 你真的了解Vue2.0的生命周期执行顺序吗?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元