敲出来的真理-vue之生命周期事件含(单页面 组件 )

虽然官网给的名字叫"生命周期钩子",但是我还是更加熟悉"生命周期事件",不然总感觉是在学习新概念。

Vue 实例生命周期

包含内容

main.js 初始化 > App.vue > 路由 第一页面 diy.vue > diy.vue 组件 MyHelloWorld.vue 

代码如下 

 main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'   //引用 element-ui 样式

Vue.use(ElementUI)
Vue.config.productionTip = false

new Vue({
  router,
  store,
  // render: h => h(App)
  render: function (createElement) {
    console.group("main.js render 渲染");

    console.log("this.$el:" + JSON.stringify(this.$el));

    console.log("this.$data:" + JSON.stringify(this.$data));

    console.groupEnd();

    return createElement(App);
  }
}).$mount('#app')

APP.vue 

<template>
  <div id="app">
    <h1>
      <div id="nav">
        菜单:
        <router-link to="/">Home</router-link> |
        <router-link to="/about">About</router-link>|
        <router-link to="/elm/layout">Layout</router-link>|
        <router-link to="/elm/Container">Container</router-link>|
        <router-link to="/Login">Login</router-link>|
        <router-link to="/test/diy">diy</router-link>|
      </div>
    </h1>
    <router-view />
  </div>
</template>
<script>
import { defineComponent } from "@vue/composition-api";

export default defineComponent({
  setup() {},
  beforeCreate: function () {
    console.group("App.vue beforeCreate 创建前");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  created: function () {
    console.group("App.vue created 创建结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  beforeMount: function () {
    console.group("App.vue beforeMount 挂载前");

    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  mounted: function () {
    console.group("App.vue mounted 挂载结束");

    console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

    console.log("this.$data:" + JSON.stringify(this.$data));

    console.log("this.msg:" + JSON.stringify(this.msg));

    console.groupEnd();
  },
  beforeUpdate: function () {
    console.group("App.vue beforeUpdate 数据更新前");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  updated: function () {
    console.group("App.vue updated 数据更新结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  beforeDestroy: function () {
    console.group("App.vue beforeDestroy 销毁前");

    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  destroyed: function () {
    console.group("App.vue destroyed 销毁结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
});
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

#nav {
  padding: 30px;
}

#nav a {
  font-weight: bold;
  color: #2c3e50;
}

#nav a.router-link-exact-active {
  color: #42b983;
}
</style>

 diy.vue

<template>
  <div>
    <h1>{{ msg }}</h1>
    <hr />
    <MyHelloWorld msg="模块 MHelloWorld.vue  Hello World!"></MyHelloWorld>
  </div>
</template>
<script>
import MyHelloWorld from "../../components/MyHelloWorld.vue";

export default {
  data() {
    return {
      msg: "页面 diy.vue Hello World!",
    };
  },

  beforeCreate: function () {
    console.group("diy.vue beforeCreate 创建前");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  created: function () {
    console.group("diy.vue created 创建结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  beforeMount: function () {
    console.group("diy.vue beforeMount 挂载前");

    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  mounted: function () {
    console.group("diy.vue mounted 挂载结束");

    console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

    console.log("this.$data:" + JSON.stringify(this.$data));

    console.log("this.msg:" + JSON.stringify(this.msg));

    console.groupEnd();
  },
  beforeUpdate: function () {
    console.group("diy.vue beforeUpdate 数据更新前");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  updated: function () {
    console.group("diy.vue updated 数据更新结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  beforeDestroy: function () {
    console.group("diy.vue beforeDestroy 销毁前");

    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  destroyed: function () {
    console.group("diy.vue destroyed 销毁结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  components: {
    MyHelloWorld,
  },
};
</script>

 MyHelloWorld.vue

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  name: "MyHelloWorld",
  props: {
    msg: String,
  },
  beforeCreate: function () {
    console.group("MyHelloWorld.vue模块 beforeCreate 创建前");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  created: function () {
    console.group("MyHelloWorld.vue模块 created 创建结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  beforeMount: function () {
    console.group("MyHelloWorld.vue模块 beforeMount 挂载前");

    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  mounted: function () {
    console.group("MyHelloWorld.vue模块 mounted 挂载结束");

    console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

    console.log("this.$data:" + JSON.stringify(this.$data));

    console.log("this.msg:" + JSON.stringify(this.msg));

    console.groupEnd();
  },
  beforeUpdate: function () {
    console.group("MyHelloWorld.vue模块 beforeUpdate 数据更新前");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  updated: function () {
    console.group("MyHelloWorld.vue模块 updated 数据更新结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  beforeDestroy: function () {
    console.group("MyHelloWorld.vue模块 beforeDestroy 销毁前");

    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
  destroyed: function () {
    console.group("MyHelloWorld.vue模块 destroyed 销毁结束");
    try {
      console.log("this.$el.innerText:" + JSON.stringify(this.$el.innerText));

      console.log("this.$data:" + JSON.stringify(this.$data));

      console.log("this.msg:" + JSON.stringify(this.msg));
    } catch (error) {}
    console.groupEnd();
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值