前提
vue版本:v2.5.17-beta.0
触发render
vue在数据更新后会自动触发view的render工作,其依赖于数据驱动;在数据驱动的工作下,每一个vue的data属性都被监听,并且在set触发时,派发事件,通知收集到的依赖,从而触发对应的操作,render工作就是其中的一个依赖,并且被每一个data属性所收集,因此每一个data属性改变后,都会触发render。
vue更新监听
看一段代码
//来自mountComponent函数
updateComponent = function() {
vm._update(vm._render(), hydrating);
};newWatcher(vm, updateComponent, noop, {
before:functionbefore () {if(vm._isMounted) {
callHook(vm,'beforeUpdate');
}
}
},true /*isRenderWatcher*/);
updateComponent是更新组件的函数,内部调用vm._update,并且传参vm._render();
vm._render()返回了什么?看源码则得知返回了虚拟dom(VNode)
vm._update函数又做了什么事情?顾名思义,更新传入的vnode
什么时候触发updateComponent函数?在任何vue的data属性更改值都会触发
更