生命周期组件
<template>
<!-- 所有的内容要被根节点包含起来 -->
<div id="life">
生命周期函数的演示 ---{{msg}}
<br data-tomark-pass> <button @click="setMsg()">执行方法改变msg</button>
</div>
</template>
<script>
/*
生命周期函数/生命周期钩子:
组件挂载、以及组件更新、组件销毁、的时候触发的一系列的方法 这些方法就叫做生命周期函数
*/
export default{
data(){
return{
msg:'msg'
}
},
methods:{
setMsg(){
this.msg="我是改变后的数据"
}
},
beforeCreate(){
console.log('实例刚刚被创建1');
},
created(){
console.log('实例已经创建完成2');
},
beforeMount(){
console.log('模板编译之前3');
},
mounted(){ /*请求数据,操作dom , 放在这个里面 mounted*/
console.log('模板编译完成4');
},
beforeUpdate(){
console.log('数据更新之前');
},
updated(){
console.log('数据更新完毕');
},
beforeDestroy(){ /*页面销毁的时候要保存一些数据,就可以监听这个销毁的生命周期函数*/
console.log('实例销毁之前');
},
destroyed(){
console.log('实例销毁完成');
}
}
</script>
生命周期
var vue = new Vue({
el: '#app',
data: {
msg: '页面渲染完毕'
},
methods: {
},
filters: {
},
beforeCreate() {
// 这是我们第一个遇到的生命周期函数,实例被创建出来,还没有data、methods等时,会执行它
let content = document.getElementById('divId')
console.log('beforeCreate:', content.innerText)
// 在js中,null和undefined是不同的含义。null表示有这个对象,但是这个对象的值是null。undefined表示压根就没有这个对象
console.log('beforeCreate', this.msg)
},
created() {
// Vue实例创建完毕,methods、data、filters等已经挂载到vue实例上。如果需要调用methods,使用data,最早只能在这里操作
let content = document.getElementById('divId')
console.log('created', content.innerText)
console.log('created', this.msg)
},
beforeMount() {
// Vue实例创建完毕,页面尚未重新渲染
let content = document.getElementById('divId')
console.log('beforeMounte', content.innerText)
console.log('beforeMounte', this.msg)
},
mounted() {
// 页面渲染完毕
let content = document.getElementById('divId')
console.log('mounted', content.innerText)
console.log('mounted', this.msg)
}
})
beforeCreate
初始化界面前.
这个时候只是一个空的Vue()对象 , 并且只有默认的生命周期函数和默认事件.
<body>
<div id="app">
<div id="divId">页面还没有渲染 --- {{msg}}</div>
</div>
<script>
var vue = new Vue({
el: "#app",
data: {
msg: "页面渲染完毕"
},
methods: {
},
filters: {
},
beforeCreate() {
// 这是我们第一个遇到的生命周期函数,实例被创建出来,
// 还没有data、methods等时,会执行它
let content = document.getElementById('divId')
console.log('beforeCreate:', content.innerText)
// 在js中,null和undefined是不同的含义。null表示有这个对象,
// 但是这个对象的值是null。undefined表示压根就没有这个对象
console.log('beforeCreate', this.msg)
}
})
</script>
</body>
create
初始化界面后
这时的data和method已经被初始化完成.
<body>
<div id="app">
<div id="divId">页面还没有渲染 --- {{msg}}</div>
</div>
<script>
var vue = new Vue({
el: "#app",
data: {
msg: "页面渲染完毕"
},
methods: {
},
filters: {
},
created() {
// 这是我们第一个遇到的生命周期函数,实例被创建出来,
// 还没有data、methods等时,会执行它
let content = document.getElementById('divId')
console.log('beforeCreate:', content.innerText)
// 在js中,null和undefined是不同的含义。null表示有这个对象,
// 但是这个对象的值是null。undefined表示压根就没有这个对象
console.log('beforeCreate', this.msg)
}
})
</script>
</body>
beforMount
渲染dom前
这时模板已经在内存中编译完成 , 但没有加载到页面中去.
<body>
<div id="app">
<div id="divId">页面还没有渲染 --- {{msg}}</div>
</div>
<script>
var vue = new Vue({
el: "#app",
data: {
msg: "页面渲染完毕"
},
methods: {
},
filters: {
},
beforeMount() {
// Vue实例创建完毕,页面尚未重新渲染
let content = document.getElementById('divId')
console.log('beforeMounte', content.innerText)
console.log('beforeMounte', this.msg)
}
})
</script>
</body>
mounted
dom渲染后
这时的页面编译并且替换完毕.
<body>
<div id="app">
<div id="divId">页面还没有渲染 --- {{msg}}</div>
</div>
<script>
var vue = new Vue({
el: "#app",
data: {
msg: "页面渲染完毕"
},
methods: {
},
filters: {
},
mounted() {
// 页面渲染完毕
let content = document.getElementById('divId')
console.log('mounted', content.innerText)
console.log('mounted', this.msg)
}
})
</script>
</body>
beforeUpdate
更新数据前
当data数据被修改后会进行触发
update
更新数据后
当update被执行到的时候 , 页面中的数据已经和data保持同步
beforeDestroy
卸载组件前
这时Vue的实例已经从运行阶段变成了销毁阶段. 而这时实例身上所有的data , methods , 过滤器 , 指令都处于可用状态
destroyed
卸载组件后
这是Vue的所有组件都不可用了