首页 > 其他分享 >vue之生命周期钩子

vue之生命周期钩子

时间:2023-06-06 19:12:57浏览次数:30  
标签:el 生命周期 console log 状态 钩子 vue data name

目录

一、生命周期图

1.官方原图

img

2.理解的图

img

二、生命周期

new Vue()---->创建出来---》页面关闭---》被销毁掉----》整个整个过程经历了一个周期----》vue帮咱们提供了一些钩子函数[写了就会执行,不写就不执行],到某个阶段,就会触发某个函数的执行new Vue()---->创建出来---》页面关闭---》被销毁掉----》整个整个过程经历了一个周期----》vue帮咱们提供了一些钩子函数[写了就会执行,不写就不执行],到某个阶段,就会触发某个函数的执行

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

vue实例有生命周期,每个组件也有这8个生命周期

8个声明周期钩子,什么情况会用到

-created:用的最多,变量初始化完成了(data中得数据),在这里,我们发送ajax请求
-beforeDestroy:组件销毁之前会执行
    -组件创建,就执行一个定时任务[每隔1s,打印一个helloworld]
    -组件销毁,定时任务要销毁,如果定时任务不销毁,会一直执行
<!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>生命周期钩子</h1>
    <input type="text" v-model="username"> --->{{username}}

    <h1>使用组件</h1>
    <button @click="handleShow">显示组件,隐藏组件</button>
    <hr>
    <child v-if="show"></child>
    <hr>
</div>


</body>
<script>
    // 组件有自己的html,css,js,事件。。。。
    // ``  模板字符串,es6语法
    // 在组件中,data必须是个函数,返回对象
    //1  定义一个全局组件
    Vue.component('child', {
        template: `
          <div>
          <button @click="back">后退</button>
          {{ name }}
          <button @click="forword">前进</button>
          </div>`,
        data() {
            return {
                name: '首页',
                t: null
            }
        },
        methods: {
            back() {
                alert('后退了')
            },
            forword() {
                alert('前进了')
            }
        },
        beforeCreate() {
            console.log('beforeCreate')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
        },
        created() {
            console.log('created')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)

            // 启动一个定时器
            this.t = setInterval(() => {
                console.log('hello world')
            }, 1000)
        },
        beforeMount() {
            console.log('beforeMount')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
        },
        mounted() {
            console.log('mounted')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
        },
        beforeUpdate() {
            console.log('beforeUpdate')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
        },
        updated() {
            console.log('updated')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
        },
        beforeDestroy() {
            console.log('beforeDestroy')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
            // 销毁定时器
            clearInterval(this.t)
            this.t = null
        },
        destroyed() {
            console.log('destroyed')
            console.log('当前el状态:', this.$el)
            console.log('当前data状态:', this.$data)
            console.log('当前name状态:', this.name)
        },


    })


    var vm = new Vue({
        el: '#app',
        data: {
            username: '',
            show: false
        },
        methods: {
            handleShow() {
                this.show = !this.show
            }
        }
    })
</script>
</html>

image
image

组件销毁 - 给组件写一个定时器

setTimeout()    // 延迟3s干什么事
setInterval()    // 延迟3s干什么事

image

标签:el,生命周期,console,log,状态,钩子,vue,data,name
From: https://www.cnblogs.com/yuezongke/p/17461385.html

相关文章

  • vue之
    目录一、计算属性案例重写过滤二、监听(侦听)属性一、计算属性1计算属性是基于它们的依赖变量进行缓存的2计算属性只有在它的相关依赖变量发生改变时才会重新求值,否则不会变(函数只要页面变化,就会重新运算)3计算属性就像Python中的property,可以把方法/函数伪装成属性4计算......
  • uniapp主题切换功能的第一种实现方式(scss变量+vuex)
    随着用户端体验的不断提升,很多应用在上线的时候都要求做不同的主题,最基本的就是白天与夜间主题。就像b站app主题切换,像这样的uniapp因为能轻松实现多端发布而得到很多开发者的青睐,但每个端的实现也有可能不同,现我把已实现的功能一点点的大家分享给大家,须要的可以参考一下,可......
  • win11 安装 Vue
    Win安装VueVue官网文档vue官网下载node.jshttps://nodejs.org/en#安装v8.9以上的版本推荐v10及以上#我下载的版本9.5.1版本链接:https://pan.baidu.com/s/19ekl3NRo4vtfv1Dp5K9kog提取码:1zoi一直点击下一步进行安装。安装到你要的目录即可。 查看npm版本......
  • VUE+elementUI前端导出解决方案,截断,清晰度,页边距,页眉页脚,富文本都处理了
    pdfLoader.js--------------------------/**@Description:html转pdf新版解决方案*@Author:jeseven/wwl*@Date:2023-05-2310:03:57*@LastEditTime:2023-05-2310:23:22*@LastEditors:jeseven/wwl*/importjsPDFfrom"jspdf";importhtml2canvasfrom&......
  • Vue2知识点简要
    一、双向绑定原理Vue2采用的是观察者-发布订阅模式,利用Object.defineProperty实现对数据已定义属性的监控(定义观察者模式),编译DOM时解析v-model等属性以及对input框等注册事件实现UI和JS的交互(也就是注册发布订阅这模式);详细的是主要是定义一个Observe类实现对象......
  • 1.Vue简介
    Vue的两个核心功能:声明式渲染:Vue基于标准HTML拓展了一套模板语法,使得我们可以声明式地描述最终输出的HTML和JavaScript状态之间的关系。响应性:Vue会自动跟踪JavaScript状态并在其发生变化时响应式地更新DOM。 渐进式框架:无需构建步骤,渐进式增强静态的HTML......
  • bean的生命周期
    执行无参构造器,创建了bean实例调用了set方法,设置了属性值执行了初始化的方法获得了创建bean实例对象执行了销毁的容器的方法packagecom.guodaxia.bean.lifttime;publicclassTestTime{Stringname;publicTestTime(){System.out.println("执行第......
  • Bean的生命周期
    1.  什么是Bean的生命周期  49Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。什么时候创建Bean对象?创建Bean对象的前后会调用什么方法?Bean对象什么时候销毁?Bean对象的销毁前后调用什么方法?2. ......
  • 关于用eclipse 开发 vue项目
    步骤:1、下载node的插件  2、下载vue插件 3、部署  ......
  • vue2插槽的透传
    多组件嵌套的情况下,有时候会希望父组件向孙子组件(或者更小的辈分)的slot中插入内容,显然,这需要在孙子组件里面用<slot:name="field.component":data="formValue"/>,在父组件里面用<childComponent#slotName="childData"><childComponent/>。但是在子组件中应该如何进行插槽的......