美文网首页
vuejs生命周期案例

vuejs生命周期案例

作者: 回不去的那些时光 | 来源:发表于2019-10-11 23:08 被阅读0次

父组件

<template>
  <div>
    <button @click="showClose = !showClose">{{ showClose ? '加载时钟' : '销毁时钟' }}</button>
    <Clock v-if="!showClose"></Clock>
  </div>
</template>

<script>
import Clock from "@/components/Clock.vue";

export default {
  data() {
    return {
      showClose: false
    };
  },
  components: {
    Clock
  }
};
</script>

子组件

<template>
  <div>
    {{ log("render") }}
    {{ now }}
    <button @click="start = !start">{{ start ? "停止" : "开始" }}</button>
  </div>
</template>

<script>
import moment from "moment";

export default {
  data: function() {
    console.log("data");
    // this.moment = moment;
    this.log = window.console.log;
    return {
      now: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
      start: false
    };
  },
  watch: {
    start() {
      this.startClock();
    }
  },
  beforeCreate() {
    console.log("beforeCreate");
  },
  created() {
    console.log("created");
  },
  beforeMount() {
    console.log("beforeMount");
  },
  mounted() {
    console.log("mounted");
    this.startClock();
  },
  beforeUpdate() {
    console.log("beforeUpdate");
  },
  updated() {
    console.log("updated");
  },
  beforeDestroy() {
    console.log("beforeDestroy");
    clearInterval(this.clockInterval);
  },
  destroyed() {
    console.log("destroyed");
  },
  methods: {
    startClock() {
      clearInterval(this.clockInterval);
      if (this.start) {
        this.clockInterval = setInterval(() => {
          this.now = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
        }, 1000);
      }
    }
  }
};
</script>

相关文章

网友评论

      本文标题:vuejs生命周期案例

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