Vue生命周期、计算属性

一:生命周期

概述:

1.生命周期又叫钩子函数,跟el、data、同级的位置,指的是vue实例从开始创建到最后销毁经历的三阶段,这三个阶段分别叫创建阶段、运行阶段的钩子函数、销毁阶段的钩子函数。

2.其中,三个阶段一共有8个函数

①创建阶段有四个函数

beforeCreate        实例创建之前

created           实例创建完成

beforeMount        模板挂载之前

mounted           模板挂载之后

②运行阶段有两个函数

beforeUpdate         视图更新之前

updated          视图更新之后

③销毁阶段有两个函数

beforeDestroy           实例销毁之前

destroyed          实例销毁之后

3.生命周期例子+说明

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>生命周期举例</title>
</head>
<body>
    <div id="app">
        <div id="a">{{msg}}</div>
        <button @click="msg++">加加</button>
    </div>
    <div id="btn">销毁</div>
    <script src="lib/vue-2.4.0.js"></script>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                msg:10
            },
            beforeCreate(){//实例创建之前
                //实例刚刚创建,new vue上只有生命周期函数
                console.log(this.msg);//undefined
            },
            created(){//实例创建完成
                //data和methods里的方法可以使用了
                console.log(this.msg);//10
            },
            beforeMount(){//模板挂载之前
                //模板编译成的模板字符串会被放进内存中生成一个虚拟dom节点
                console.log(a.innerHTML);//{{msg}}
            },
            mounted(){//模板挂载之后
                console.log(a.innerHTML);//10
            },
            beforeUpdate(){//视图更新之前
                //也就是说data里的数据发生改变,但视图里的数据还没有发生改变
                console.log(this.msg);//11
                console.log(a.innerHTML);//10
            },
            updated(){//视图更新之后
                //视图里的数据跟着data里的数据改变之后
                console.log(this.msg);//11
                console.log(a.innerHTML);//11
            },
            beforeDestroy(){//实例销毁之前
                console.log(this.msg);//11
            },
            destroyed(){//实例销毁之后
                console.log(this.msg);//11
            }
        })
        //vm.$destroy()  让vue实例销毁的方法
        //实例销毁之后再次点击加加按钮会失效
        btn.onclick=()=>{//点击销毁
            vm.$destroy();
        }

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

二:计算属性(computed)

概述:

1.在methods方法里,他没有缓存、只要数据一改变就会重新执行,但是跟他无关的数据也会执行。而计算属性可以解决这个问题

2.计算属性是一个属性,用法跟data里定义的数据用法一样。它需要一个return值 ,并且他有缓存。只有跟他有关的data发生变化的时候才会重新计算,跟他无关的数据发生变化不会触发。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>计算属性例子</title>
</head>
<body>
    <div id="app">
        <button @click="a++">a++</button>
        <button @click="str=‘world‘">str变化</button>
        a:{{adda()}}
        <br>
        方法methods里的{{changestr()}} <br>
        计算属性computed里的{{changestr2}}

    </div>
    <script src="lib/vue-2.4.0.js"></script>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                a:0,
                age:10,
                str:"hello"
            },
            methods:{
                adda(){
                    console.log("aaa")
                    return this.a+this.age
                },
                changestr(){
                    console.log(‘我是methods里的changestr‘)
                    return this.str.repeat(3)//重复三遍
                }
            },
            // 计算属性
            computed:{
                changestr2(){
                    console.log(‘我是methods里的changestr2‘)
                    return this.str.repeat(3)
                }
            },
            //点击a++的时候,后台打印结果如下
                //aaa
                //我是methods里的changestr
            //每点击a++一次,它就会打印一次
            //而当点击str变化的时候,后台打印结果是
                //aaa
                //我是methods里的changestr
                //我是methods里的changestr2
            //因为点击后str已经等于world了,所以当你再次点击tr变化的时候,他就不会打印了
        })
    </script>
</body>
</html>

原文地址:https://www.cnblogs.com/zhd09/p/11707174.html

时间: 2024-11-08 10:35:13

Vue生命周期、计算属性的相关文章

vue 524 (生命周期 计算属性 监听)

每个 Vue 实例在被创建时都要经过一系列的初始化过程--例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会. 依据上表可以确定各个位置的先后触发顺序 //  关于计算属性: vue改变或获取一个内部方法有以下两种种. 1.在vue对象中 以  methods:{}模式定义各类成员方法: 例如(js  vue对象定义内): methods:{ FF1(){return

vue生命周期的介绍

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>vue生命周期</title> 6 <script src="../js/vue.js"></script> 7 <meta name="viewport" content="width=devic

vue 生命周期

一 vue的生命周期如下图所示(很清晰) 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>vue生命周期</title> <script src="../js/vue.js"></script> &

vue生命周期钩子函数

转载自:https://segmentfault.com/a/1190000008879966 vue生命周期探究(一) 前言 在使用vue开发的过程中,我们经常会接触到生命周期的问题.那么你知道,一个标准的工程项目中,会有多少个生命周期勾子吗?让我们来一起来盘点一下: 根组件实例:8个 (beforeCreate.created.beforeMount.mounted.beforeUpdate.updated.beforeDestroy.destroyed) 组件实例:8个 (beforeCr

Vue生命周期学习

转自https://www.w3cplus.com/vue/vue-instances-and-life-cycles.html Vue实例虽然没有完全遵循MVVM模型,但Vue的设计无疑受到了它的启发. View:是看得到的,即视图,用到Vue的项目中来,它应该是"模板".也就是用来挂载Vue实例的一个DOM元素,通常在项目根目录中index.html文件中出现,比如<div id="app"></div>. Model:即模型(或数据),

vue生命周期和react生命周期对比

一 vue的生命周期如下图所示(很清晰)初始化.编译.更新.销毁 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>vue生命周期</title> <script src="../js/vue.js"></

Vue生命周期及业务场景使用

vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么? beforeCreate 实例创建前:这个阶段实例的data.methods是读不到的created 实例创建后:这个阶段已经完成了数据观测(data observer),属性和方法的运算, watch/event 事件回调.mount挂载阶段还没开始,$el 属性目前不可见,数据并没有在DOM元素上进行渲染beforeMount:在挂载开始之前被调用:相关的 render 函数首

vue生命周期钩子函数解读步骤

vue 生命周期: 一个组件从创建到销毁的过程 let vm = new Vue({ el : "id", data : { }, 1. beforeCreate(){ 1. 当vue实例化的时候会做一个初始化的操作,在这个生命周期函数里面我们可以做初始化的loading 2. 在当前函数中访问不到data中的属性,但是可以通过Vue的实例进行访问 vm."属性" console.log(beforeCreate) } 2. created(){ 1. 当befor

Vue 生命周期方法

一.Vue 生命周期 Vue的生命周期即是实例从创建到销毁的一个过程.之前在学习Vue的时候,看过官网的教程,但是经常用到的是mounted,所以对其他生命周期方法不是很熟悉,这里有空做个总结,也方便以后查阅. 二.Vue生命周期方法 主要方法有:beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,Destroyed.还有两个不常用的actived,deactivated,这两个方法用于被<kee

Vue生命周期详解(1)- 单个组件

刚接触vue,使用vue并没意识到生命周期的重要性.直到项目深入,在解决父组件异步加载数据传给子组件并渲染时首次渲染异常的问题时,浪费了很多时间,才发现自己对vue生命周期理解的欠缺.因此,这次专门重新学习一下vue的生命周期并总结在这里分享,希望对大家有所帮助. 首先上官方大图(是不是很高大上?然而,有点晦涩,对初学者不是很友好!) 不过不用担心,咱们程序员不就是实践出真知嘛!上代码: 1 <!DOCTYPE html> 2 <html lang="en">