vue中的实例方法的底层原理

来源:博客园 分类: 文章浏览史 发布时间:2020-03-17 17:48:53 最后更新:2020-03-17 浏览:903
转载声明:
本文为摘录自“博客园”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2020-03-17 17:48:53

生命周期 钩子函数
一个组件从创建到销毁的过程就是生周期


beforeCreate:创建前
1、当前vue实例化的时候会做一个初始化的操作,在这个生命周期函数里面我们可以做初始化的loading
2、在当前函数里面是访问不到data中的属性,但是可以通过vue的实例对象进行访问

created:创建后
1、当beforeCreate执行完毕以后,会执行created. 在当前函数中我们可以访问到data中的属性
2、当前生命周期函数执行的时候会将data中所以的属性和methods身上所以的方法添加到vue的实例身上,同时
会将data中所有的属性添加一个getter/setter方法

3、如果需要进行前后端上数据交互(ajax请求的时候) 需要在当前生命周期中使用

beforeMount:挂载前
(渲染)
render函数初次被调用---->数据和模板没有进行相结合,同时还没有渲染到html页面上

渲染前data中数据最后的修改

mounted:挂载后
1、数据和模板进行相结合,渲染成真实的DOM结构
2、在当前生命周期函数里面我们可以访问到真实的DOM结构,
3、在vue中我们可以通过$refs来访问到真实的DOM结构
4、ref类似与id一样 值必须是唯一的 访问的时候我们可以通过this.$refs.属性

beforeDestroy:销毁前
销毁之前还可以访问到DOM结构 以及相关的数据(data)
在这个生命周期函数中我们可以将绑定的事件进行移除

destroyed:销毁后
在这个生命周期函数中会将数据和模板之间的关系断开(不是你的做的)

在这个生命周期函数中我们还是可以访问到data中的属性
但是访问不到真实的DOM结构了

beforeUpdate:更新前
只要data中的属性发生了改变,那么这个生命周期就会执行,render函数再次会执行
在这个生命周期函数中我们可以对数据进行最后的修改,同时也可以访问到最新的DOM结构和数据

updated:更新后
在当前生命周期函数中我们可以访问到最新的DOM结构(数据更新后最新的DOM结构)和数据

 

let eventList = {};


const $on=(eventName,cb)=>{

if(!eventList[eventName]){
eventList[eventName] = [];
}
eventList[eventName].push(cb)
}

 


const $emit = (eventName,params)=>{

if(eventList[eventName]){
let arr = eventList[eventName];
arr.map((cb)=>{
cb(params)
})
}
}


const $off = (eventName,cb)=>{
if(eventList[eventName]){
if(cb){
let index = eventList[eventName].indexOf(cb);
eventList[eventName].splice(index,1);

}else{
eventList[eventName].length = 0;

}
}
}

php技术微信