MCPcopy Create free account
hub / github.com/ygs-code/vue / _update

Function _update

vue.js:9069–9172  ·  view source on GitHub ↗
(oldVnode, vnode)

Source from the content-addressed store, hash-verified

9067
9068 //更新指令 比较oldVnode和vnode,根据oldVnode和vnode的情况 触发指令钩子函数bind,update,inserted,insert,componentUpdated,unbind钩子函数
9069 function _update(oldVnode, vnode) {
9070
9071
9072 var isCreate = oldVnode === emptyNode; // 判断旧的指令是否等于一个空的指令
9073 var isDestroy = vnode === emptyNode;// 判断现在指令是否等于一个空的指令
9074 //指令字符串 vm this上下文
9075 console.log(oldVnode)
9076 console.log(vnode)
9077 //规范化的指令,为指令属性修正变成规范的指令数据。返回指令数据集合
9078 var oldDirs = normalizeDirectives$1(
9079 oldVnode.data.directives, //vonde指令对象集合
9080 oldVnode.context //vm vne实例化对象,或者是组件实例化的对象
9081 );
9082 //规范化的指令,为指令属性修正变成规范的指令数据。返回指令数据集合
9083 var newDirs = normalizeDirectives$1(
9084 vnode.data.directives, //vonde指令对象集合
9085 vnode.context //vm vne实例化对象,或者是组件实例化的对象
9086 );
9087
9088 var dirsWithInsert = [];
9089 var dirsWithPostpatch = [];
9090
9091 var key, oldDir, dir;
9092 for (key in newDirs) { //循环新的指令集合
9093 console.log(newDirs[key])
9094
9095 oldDir = oldDirs[key]; //获取旧的单个指令值
9096 dir = newDirs[key];//获取新的单个指令值
9097 if (!oldDir) { //如果旧的不存在了
9098 // new directive, bind 新指令,绑定
9099 callHook$1(
9100 dir, //新的指令值
9101 'bind', //触发bind钩子函数
9102 vnode,//新的vonde
9103 oldVnode //旧的vonde
9104 );
9105 if (dir.def && dir.def.inserted) { //获取指令的属性。 插入标记,指令
9106 dirsWithInsert.push(dir); //记录插入指令
9107 }
9108 } else {
9109
9110 // existing directive, update 现有的指令,更新
9111 dir.oldValue = oldDir.value; // 如有指令 <div v-hello='123'></div> value=123. 如果更新了123 就是更新值
9112 callHook$1(dir,
9113 'update', //触发更新钩子函数
9114 vnode,
9115 oldVnode
9116 );
9117 if (dir.def && dir.def.componentUpdated) { // 组件更新
9118 dirsWithPostpatch.push(dir); //记录更新
9119 }
9120 }
9121 }
9122
9123 if (dirsWithInsert.length) {
9124 var callInsert = function () {
9125 for (var i = 0; i < dirsWithInsert.length; i++) {
9126 callHook$1(

Callers 1

updateDirectivesFunction · 0.85

Calls 4

normalizeDirectives$1Function · 0.85
callHook$1Function · 0.85
mergeVNodeHookFunction · 0.85
callInsertFunction · 0.85

Tested by

no test coverage detected