Vue入门九、Vue生命周期

先上图:

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    var mytest = {
        template: `
                <div>测试 {{msg}}
                    <br>
                    <button @click="msg+=‘1‘" >点一下数据会更新</button>
                </div>
            `,
        data() {
            return {
                msg: ‘嗯呢‘
            }
        },

        // 组件创建前
        beforeCreate() {
            console.log(‘组件创建前‘)
            console.log(this.msg)
        },
        // 组件创建后
        created() {
            console.log(‘组件创建后‘)
            console.log(this.msg)
        },
        // Dom 挂载前
        beforeMount() {
            console.log(‘Dom挂载前‘)
            console.log(document.body.innerText)
        },
        // Dom 挂载后
        mounted() {
            console.log(‘Dom挂载后‘)
            console.log(document.body.innerText)
        },
        // 数据变更前
        beforeUpdate() {
            console.log(‘数据更新前‘)
            console.log(document.body.innerText)
        },
        // 数据变更后
        updated() {
            console.log(‘数据更新后‘)
            console.log(document.body.innerText)
        },
        // 组件销毁前
        beforeDestroy() {
            console.log(‘组件销毁前‘)
        },
        // 组件销毁后
        destroyed() {
            console.log(‘组件销毁后‘)
        },
        // 组件激活
        activated() {
            console.log(‘组件激活‘)
        },
        // 组件停用
        deactivated() {
            console.log(‘组件停用‘)
        }
    }
    new Vue({
        el: ‘#app‘,
        template: `
                <div>
                    <keep-alive><mytest v-if="mytestShow"></mytest></keep-alive>
                    <button @click="clickDestroy">组件销毁</button>
</div>
            `,
        components: {
            mytest
        },
        data() {
            return {
                mytestShow: true
            }
        },
        methods: {
            clickDestroy() {
                this.mytestShow = !this.mytestShow
            }
        }
    })

</script>
</body>
</html>

在需要频繁的创建和销毁组件,如果用的是v-if,可以使用activated()deactivated()对组件进行激活和停用,前提是被操作组件要用<keep alive></keep alive>包裹
例:<keep-alive><mytest v-if="mytestShow"></mytest></keep-alive>

原文地址:https://blog.51cto.com/12012821/2401844

时间: 2024-10-06 00:22:24

Vue入门九、Vue生命周期的相关文章

vue嵌套组件的生命周期

vue嵌套组件的生命周期 问:有A.B.C三个组件,A为B的父组件,B为C的父组件,它们的创建和挂载顺序是怎样的?即(beforeCreate/created,beforeMounte/mounted)的执行顺序 代码演示 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewpo

转:OSGi 入门篇:生命周期层

OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或者两者的结合),并且给了应用本身很大的动态性. 这一章里,我们介绍生命周期层的基本特性和如何有效的使用这些特性.当然按照惯例,我们依然会先讲清楚什么是生命周期管理以及OSGi需要生命周期管理的原因,然后再讲解生命周期层的一些基本内容. 1 什么是生命周期管理 一般来说,程序(或者程序的一部分)都一定

Vue 实例中的生命周期钩子

Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑. Vue 实例 在文档中经常会使用 vm 这个变量名表示 Vue 实例,在实例化 Vue 时,需要传入一个选项对象,它可以包含数据(data).模板(template).挂载元素(el).方法(methods).生命周期钩子(lifecyclehook)等选项. Vue 实例化的选项 需要注意的

Vue.js学习之生命周期

每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后在数据变化时更新 DOM .在这个过程中,实例也会调用一些 生命周期钩子 ,这就给我们提供了执行自定义逻辑的机会.例如,created 这个钩子在实例被创建之后被调用: var vm = new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 console.log(

vue 学前班003(生命周期)

ue把整个生命周期划分为创建.挂载.更新.销毁等阶段,每个阶段都会给一些"钩子"让我们来做一些我们想实现的动作.学习实例的生命周期,能帮助我们理解vue实例的运作机制,更好地合理利用各个钩子来完成我们的业务代码. 我们分别来看看这几个阶段: 1. beforeCreate 此阶段为实例初始化之后,此时的数据观察和事件配置都没好准备好. 我们试着console一下实例的数据data和挂载元素el,代码如下: <div id="app">{{name}}&l

前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)

一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模型,Vue 的设计无疑受到了它的启发.因此在文档中经常会使用 vm (ViewModel 的简称) 这个变量名表示 Vue 实例. 1.vue.js就是一个构造器,通过构造器Vue来实例化一个对象:例如:var vm = new Vue({});2.实例化Vue时,需要传入一个参数(选

【Vue.js学习】生命周期及数据绑定

一.生命后期 官网的图片说明: Vue的生命周期总结 var app = new Vue({ el:"#app", beforeCreate: function(){ console.log('1-beforeCreate 初始化之前'); //加载loading }, created: function(){ console.log('2-created 创建完成'); //关闭loading }, beforeMount: function(){ console.log('3-be

Vue 3.0 的生命周期

new Vue() new一个vue实例化对象 init Event & Lifecycle 执行一些初始化和生命周期相关的操作 beforeCreate 组件实例刚刚被创建出来 执行一些初始化和生命周期相关的操作 init injections & reactivity 初始化注入和校验 created data数据属性已经绑定,放在data中的属性当值发生改变的同时,视图也会改变 组件实例创建完成,属性已经绑定,但是DOM还没有生成,$el属性还不存在 此时还没有创建el Has &q

vue 学习一 组件生命周期

先上一张vue组件生命周期的流程图 以上就是一个组件完整的生命周期,而在组件处于每个阶段时又会提供一些周期钩子函数以便我们进行一些逻辑操作,而总体来讲 vue的组件共有8个生命周期钩子 beforeCreate 实例创建前 create 实例创建后 beforeMount dom挂载前 mounted dom挂载后 beforeUpdate 数据更新前 updated 数据更新后 beforeDestroy 组件实例销毁前 destroyed 组件实例销毁后 每一个生命周期,vue做的事情不同,

Vue环境搭建以及生命周期

Vue项目环境搭建 """ node ~~ python:node是用c++编写用来运行js代码的 npm(cnpm) ~~ pip:npm是一个终端应用商城,可以换国内源cnpm vue ~~ django:vue是用来搭建vue前端项目的 1) 安装node 官网下载安装包,安装:https://nodejs.org/zh-cn/ 2) 换源安装cnpm >: npm install -g cnpm --registry=https://registry.npm.t