vue基础——生命周期

生命周期

生命周期常用函数:
Mounted()​ 注册一个回调函数,在组件挂载完成后执行。
Updated()​ 注册一个回调函数,在组件因为响应式状态变更而更新其 DOM 树之后调用
Unmounted()​ 注册一个回调函数,在组件实例被卸载之后调用。
beforeCreate 在组件实例初始化完成之后立即调用。
created() 在组件实例处理完所有与状态相关的选项后调用。
BeforeMount()​ 注册一个钩子,在组件被挂载之前被调用
BeforeUpdate()​ 注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用。
BeforeUnmount()注册一个钩子,在组件实例被卸载之前调用。

<body>
    <div id="app">
        <h1 id="abc">{{num}}</h1>
        <button @click="num++">点击++</button>
        <ul id="list">
            <li v-for="(item,index) in arr" :key="index">{{item}}</li>
        </ul>
        <button @click="add">点击添加高端学府</button>
        <button @click="die">销毁组件实例</button>
    </div>
</body>
</html>
<script type="module">
import {createApp} from './js/vue.esm-browser.js';
let app=createApp({
    data(){
        return{
            str:'中午吃啥',
            num:100,
            arr:['郑州大学','西亚斯学院','郑州科技学院']
        }
    },
    //在组件实例初始化完成之后立即调用。此刻其他的属性和方法均没有执行或者编译
    beforeCreate(){
        console.log(this.str);
    },
/*
在组件实例处理完所有与状态相关的选项后调用。当这个钩子被调用时,以下内容已经设置完成:响应式数据、计算属性、方法和侦听器。然而,此时挂载阶段还未开始,因此 $el 属性仍不可用。此时不能操作dom
*/
created(){
    console.log('created',this.str);
    let abc=document.querySelector('#abc');
    console.log(abc);
    this.num+=100;
},
/*
vue的组件模板,如果在实例中设置的有组件的模板,则会替换掉挂载的dom元素
模板的第一层需要是一个完整的dom元素(vue2版本)
*/
// template:`
//     <h3>{{num}}</h3>
//     <h2>{{str}}</h2>
// `

/*
在组件被挂载之前调用。此刻还没有挂载任何模板,因此还无法操作dom
*/
beforeMount(){
    console.log('beforeMount');
},
/*
组件被挂之后调用。此时,所有的模板内容都已经被挂载,可以操作组件中所有的dom
常用此钩子函数来进行,加载立即执行的操作
*/
mounted(){
    console.log('mounted');
    this.show()
},
methods:{
    show(){
    let abc=document.querySelector('#abc');
    console.log(abc);
    abc.style.border='1px #f00 solid ';
    },
    add(){
        this.arr.push('河南建筑职业技术学院');
    },
    die(){
        //销毁vue实例
        // this.$destroy();
        //解绑/卸载vue实例
        console.log(app);
        app.unmount();
    }
},

/*
beforeUpdate 钩子 数据更新前触发,显示的数据是更新后的数据
但是如果改变了dom结构,那么改函数中的dom结构是更新前的内容
*/
beforeUpdate(){
    let list=document.querySelector('#list');
    console.log('beforeUpdate',this.num,list.innerHTML);
},
/*
Update 钩子 数据更新后触发,显示的数据是更新后的数据
但是如果改变了dom结构,那么该函数中的dom结构是更新后的内容
*/
updated(){
    console.log('updated',this.num,list.innerHTML);
},

/*
在一个组件实例被卸载之前调用。
*/
beforeUnmount(){
    console.log('beforeUnmount');
},
/*
在一个组件实例被卸载之后调用。
*/
unmounted(){
    log('unmounted');
},
});
//挂载
app.mount('#app');
</script>


  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值