首页 > 其他分享 >Vue生命周期

Vue生命周期

时间:2022-10-26 19:35:27浏览次数:46  
标签:el 生命周期 console log destroyed Vue data

Vue生命周期

Vue的四个过程

1.实例创建,数据放在实例中

2.挂载模板:el---->div

3.改页面,改变量,都会互相影响

4.销毁实例

四个过程对应的八个函数

钩子函数 作用
beforeCreate 创建Vue实例之前调用,data,el都没有
created 创建Vue实例成功后调用(可以在此处发送异步请求后端数据),data有了,el没有的
beforeMount 渲染DOM之前调用 ,data有了,el没有
mounted 渲染DOM之后调用
beforeUpdate 重新渲染之前调用(数据更新等操作时,控制DOM重新渲染)
updated 重新渲染完成之后调用
beforeDestroy 销毁之前调用
destroyed 销毁之后调用

AOP的体现:面向切面编程--》装饰器实现aop

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
    <h1>vue声明周期</h1>
    <button @click="handleShow">点我组件显示和消失</button>
    <hr>
    <child v-if="show"></child>
    <hr>

</div>


</body>

<script>
    // 定义一个全局组件
    Vue.component('child', {
        template: `
          <div>
          <button>后退</button>
          {{ title }}
          <button @click="handleClick">前进</button>
          </div>`,
        data() {
            return {
                title: '好看的首页',
                t:''
            }
        },
        methods: {
            handleClick() {
                // alert('前进')
                this.title = 'lqz'

            }
        },
        beforeCreate() {
            console.log('beforeCreate')
            console.log(this.$data)
            console.log(this.$el)
        },
        created() {
            console.log('created')
            console.log(this.$data)
            console.log(this.$el)
            // 开启定时器,每隔3s,打印hello
            this.t=setInterval(()=>{
                console.log('hello')
            },3000)
        },
        beforeMount() {
            console.log('beforeMount')
            console.log(this.$data)
            console.log(this.$el)
        },
        mounted() {
            console.log('mounted')
            console.log(this.$data)
            console.log(this.$el)
        },
        beforeUpdate() {
            console.log('beforeUpdate')
        },
        updated() {
            console.log('updated')
        },
        beforeDestroy() {
            console.log('当前状态:beforeDestroy')
        },
        destroyed() {
            console.log('当前状态:destroyed')
            // 销毁定时器
            clearInterval(this.t)
            this.t=null

        },
    })

    var vm = new Vue({
        el: '#app',
        data: {
            show: true
        },
        methods: {
            handleShow() {
                this.show = !this.show
            }
        }

    })
</script>
</html>

学习生命周期重点掌握的

  • 组件向后端发送请求,获取数据,应该放在 created 写,此时data已经有数据了
  • destroyed做一些资源清理性的工作

小案例:

组件创建,开启定时器,不停的打印hello,在destroyed中对定时器进行销毁

js 定时任务

 setTimeout(()=>{
       console.log('3s后执行我')
    },3000)

js 延时任务

setInterval(()=>{
     console.log('hello')
   },3000)

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
    <h1>vue声明周期</h1>
    <button @click="handleShow">点我组件显示和消失</button>
    <hr>
    <child v-if="show"></child>
    <hr>

</div>


</body>

<script>
    // 定义一个全局组件
    Vue.component('child', {
        template: `
          <div>
          <button>后退</button>
          {{ title }}
          <button @click="handleClick">前进</button>
          </div>`,
        data() {
            return {
                title: '好看的首页',
                t:''
            }
        },
        methods: {
            handleClick() {
                // alert('前进')
                this.title = 'lqz'

            }
        },
        beforeCreate() {
            console.log('beforeCreate')
            console.log(this.$data)
            console.log(this.$el)
        },
        created() {
            console.log('created')
            console.log(this.$data)
            console.log(this.$el)
            // 开启定时器,每隔3s,打印hello
            this.t=setInterval(()=>{
                console.log('hello')
            },3000)
        },
        beforeMount() {
            console.log('beforeMount')
            console.log(this.$data)
            console.log(this.$el)
        },
        mounted() {
            console.log('mounted')
            console.log(this.$data)
            console.log(this.$el)
        },
        beforeUpdate() {
            console.log('beforeUpdate')
        },
        updated() {
            console.log('updated')
        },
        beforeDestroy() {
            console.log('当前状态:beforeDestroy')
        },
        destroyed() {
            console.log('当前状态:destroyed')
            // 销毁定时器
            clearInterval(this.t)
            this.t=null

        },
    })

    var vm = new Vue({
        el: '#app',
        data: {
            show: true
        },
        methods: {
            handleShow() {
                this.show = !this.show
            }
        }

    })
</script>
</html>

什么场景下用定时任务

  • 实时跟后端交互

    ​ 基于http+定时任务 (websocket协议:服务端主动推送消息,手机app的消息推送)

  • 秒杀场景:

    ​ 先提交秒杀请求,每隔3s,查询是否秒到

标签:el,生命周期,console,log,destroyed,Vue,data
From: https://www.cnblogs.com/nirvana001/p/16829727.html

相关文章

  • Vue项目中,html高度无法撑开的解决方法
    在src目录中新建CSS目录,并在此目录下创建global.css文件,填写如下内容:  随后在main.js中引入该CSS文件。如下: ......
  • vue-js中键盘事件编码
    js里面的键盘事件经常用到的:keyCode8=BackSpaceBackSpacekeyCode9=TabTabkeyCode12=ClearkeyCode13=EnterkeyCode16=Shift_LkeyCode17=Control_Lkey......
  • vue2与vue3的区别
    1、vue使用的是object.defineProperty,vue3使用的是proxy+reflect2、Object.defineProperty(vue2)一次只能监视一个属性,如果要监视一个对象,那么需要遍历这个对象但proxy+......
  • vue-公共组件的注册
    注册公共组件,在每个需要的页面直接输入文件名(<g-table/>)即可引用该组件步骤:1.新建components/global文件夹,以及components/global/g-table.vue文件。2.新建unti......
  • vue.js+canvas实现随机验证码
    登录注册啥的,不需要下载插件,上图:<template><divclass="about"><p>当前验证码:{{codeStr}}</p><canvasid="canvas"width="100"height="43"@click="cr......
  • Vue学习笔记之Vue判断字符串(或数组)中是否包含某个元素
    0x00概述Vue判断字符串中是否包含某个字符串,有如下方法。 0x01includes方法(数组,字符串都可以)varstr=“HelloWorld!”;if(str.includes(“World”)){} ......
  • VUE CLI2 安装配置less,less-loader。webpack版本5
    先查看自己的webpack版本,我的是5.74。在node_modules/webpack里面查看   我尝试安装过7版本less-loader,没报错,但是当我导入antd的less文件时开始报错,于是卸载后安装......
  • Vue3笔记(二)了解组合式API的应用与方法
    一、组合式API(CompositionAPI)的介绍官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html组合式API(CompositionAPI)是一系列API的集合,......
  • Vue学习笔记之Vue文件书写规范
    0x00概述本文转载,原文 0x01template模块1.1<template> 标签上不要写多余的属性(默认就是以html来解析)<!--Notrecommended--><templatelang="html"></temp......
  • Vue3-CompositionAPI-响应式基础
    一、响应式基础前提:你会使用setup函数或<scriptsetup>语法1.reactive我们可以使用reactive()函数创建一个响应式对象或数组:import{reactive}from'vue'c......