• Vue实例的生命周期_两个重要的钩子


    饮水思源:

    https://vuejs.org/v2/guide/instance.html#Instance-Lifecycle-Hooks

    https://www.bilibili.com/video/BV1Zy4y1K7SH?p=49&spm_id_from=pageDriver

    引入生命周期——一个渐变特效

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="UTF-8" />
      <title></title>
      <script src="JS/vue.js"></script>
    </head>
    
    <body>
      <h1>一个渐变特效&VUE的生命周期</h1>
      <div id="root">
        <h2 :style="{opacity}">一个渐变的文字</h2>
      </div>
    
      <script>
        new Vue({
          el: "#root",
          data: {
            opacity: 0.5
          },
          mounted() {
            console.log("mount是挂载的意思,mounted是挂载完毕,也就是dom被放入页面后");        
            setInterval(() => {
              this.opacity -= 0.01;
              if (this.opacity <= 0) this.opacity = 1;
            }, 20)
          },
        });
      </script>
    </body>
    </html>

    两个重要的钩子——mounted和beforeDestroy

    单纯stop,组件确实不再更新,但是计时器没有关掉,也就是“setInterval没被干掉”还会不断输出:

      <script>
        new Vue({
          el: "#root",
          data: {
            opacity: 0.5,
          },
          methods: {
            stop() {
              this.$destroy();
            }
          },
          mounted() {     
            this.tid = setInterval(() => {
              console.log("setInterval没被干掉")
              this.opacity -= 0.01;
              if (this.opacity <= 0) this.opacity = 1;
            }, 20)
          },
        });
      </script>

    正确的写法,在销毁之前还需要处理后事,并且这个逻辑应该写在自己身上:

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="UTF-8" />
      <title></title>
      <script src="JS/vue.js"></script>
    </head>
    
    <body>
      <h1>一个渐变特效&VUE的生命周期</h1>
      <div id="root">
        <h2 :style="{opacity}">一个渐变的文字</h2>
        <button v-on:click="stop">点我停止渐变</button>
      </div>
    
      <script>
        new Vue({
          el: "#root",
          data: {
            opacity: 0.5,
          },
          methods: {
            stop() {
              this.$destroy();
            }
          },
          mounted() {     
            this.tid = setInterval(() => {
              console.log("setInterval没被干掉")
              this.opacity -= 0.01;
              if (this.opacity <= 0) this.opacity = 1;
            }, 20)
          },
          beforeDestroy() {
            clearInterval(this.tid)
          },
        });
      </script>
    </body>
    </html>
  • 相关阅读:
    姚班
    xxx
    1358B
    1368A
    莫烦Tensorflow 建造自己的NN
    莫烦Tensorflow 入门
    linux服务器安装Apache (Centos)
    C++ 获取Linux 服务器CPU占用率+内存空闲率(亲测绝对可以运行)
    MySQL主键从初始值自增
    基础练习 矩阵乘法
  • 原文地址:https://www.cnblogs.com/xkxf/p/15843333.html
Copyright © 2020-2023  润新知