iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Vue.js

重新瞭解vue3.js + vite框架系列 第 25

Day25-生命週期簡要介紹(2)

  • 分享至 

  • xImage
  •  

執行上一篇所介紹vue的8個生命週期

25-0 js

<script type="text/x-template" id="childarea">
  <div>
    <h4>{{ text }}</h4>
    <input type="text" class="form-control" v-model="text">
  </div>
</script>
<script>
  //子元件
const child = {
  template: '#childarea',
  data: function () {
    return {
      text: 'Vue data 資料狀態'
    }
  },
  //準備資料狀態,取不到text資料
  beforeCreate() {
    console.log(`beforeCreate! ${this.text}`);
  },
  //已準備好資料,取到資料
  created() {
    console.log(`created! ${this.text}`);
    alert(`created! ${this.text}`);
  },
  //準備html結構,未渲染畫面
  beforeMount() {
    alert(`beforeMount! ${this.text}`);
  },
  //已經生成div,已產生結構,狀態被停住,所以取不到元素,要操作JS須等此狀態結束後才能執行
  mounted() {
    alert(`mounted! ${this.text}`);
  },
  //已顯示html的text資料
  updated () {
    console.log(`updated! ${this.text}`);
  },
  //Keep Alive維持生命週期:啟用後顯示之前停用時保留狀態記錄
  activated () {
    alert(`activated! ${this.text}`);
  },
  //Keep Alive維持生命週期:停用但保留停用前狀態記錄
  deactivated () {
    alert(`deactivated! ${this.text}`);
  },
  //點選按鈕後隱藏元件,進行卸載
  beforeUnmount() {
    console.log(`beforeUnmount! ${this.text}`);
  },
    //點選按鈕後隱藏元件,進行卸載
  unmounted() {
    console.log(`unmounted! ${this.text}`);
  }
};
const App = {
  data() {
    // 切換子元件顯示與否
    return {
      isShowing: false
    }
  }
};
Vue.createApp(App).component('child', child)
  .mount('#app');
 </script>

25-1 切換按鈕-生命週期流程

  <button @click="isShowing = !isShowing" class="btn btn-primary">
    <span v-if="isShowing">隱藏元件</span>
    <span v-else>顯示元件</span>
  </button>
  <hr>
  <!-- 切換子元件顯示與否 -->
  <child v-if="isShowing"></child>

25-2 使用 Keep Alive 維持生命週期

<keep-alive>
  <child v-if="isShowing"></child>
</keep-alive>

https://ithelp.ithome.com.tw/upload/images/20231010/20121669XGBbVyyZTo.png

.
知識點來源:六角課程、網路文章

以上是今天所提供知識點如有誤,再請務必在下面留言~


上一篇
Day24-生命週期簡要介紹(1)
下一篇
Day26-為何要拆解成元件
系列文
重新瞭解vue3.js + vite框架30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言