1. 程式人生 > 其它 >Vue生命週期探討

Vue生命週期探討

技術標籤:# Vue學習vue

生命週期圖示生命週期列表

從一道面試題開始

在這裡插入圖片描述
測試程式碼:

<!DOCTYPE html>
<html>
<head>
    <title>Vue原始碼剖析</title>
    <script src="vue.js"></script>
</head>

<body>
    <div id="demo">
        <h1>宣告週期</h1>
        <
p
>
{{foo}}</p> </div> <script> // 建立例項 const app = new Vue({ el: '#demo', data:{ foo: 'foo' }, beforeCreate(){console.log('beforeCreate')}, created(){console.log('created '+this.$el)},
beforeMount(){console.log('beforeMount')}, mounted(){ setTimeout(() => { this.foo = 'foooooo' }, 2000); console.log('mounted '+this.$el)}, beforeUpdate(){console.log('beforeUpdate')}, updated
(){console.log('updated')}, });
</script> </body> </html>

結論:

  • 三個階段:初始化、更新、銷燬
  • 初始化:beforeCreate、created、beforeMount、mounted
  • 更新:beforeUpdate、updated
  • 銷燬:beforeDestroy、destroyed

使用場景分析

{
  beforeCreate(){} // 執行時元件例項還未建立,通常用於外掛開發中執行一些初始化任務
  created(){} // 元件初始化完畢,各種資料可以使用,常用於非同步資料獲取
  beforeMounted(){} // 未執行渲染、更新,dom未建立
  mounted(){} // 初始化結束,dom已建立,可用於獲取訪問資料和dom元素
  beforeUpdate(){} // 更新前,可用於獲取更新前各種狀態
  updated(){} // 更新後,所有狀態已是最新
  beforeDestroy(){} // 銷燬前,可用於一些定時器或訂閱的取消
  destroyed(){} // 元件已銷燬,作用同上
}