MCPcopy
hub / github.com/ygs-code/vue / cloneVNode

Function cloneVNode

vue.js:1188–1222  ·  view source on GitHub ↗
(vnode, deep)

Source from the content-addressed store, hash-verified

1186
1187 //克隆节点 把节点变成静态节点
1188 function cloneVNode(vnode, deep) {
1189 //
1190 var componentOptions = vnode.componentOptions;
1191 /*组件的option选项*/
1192 var cloned = new VNode(
1193 vnode.tag,
1194 vnode.data,
1195 vnode.children,
1196 vnode.text,
1197 vnode.elm,
1198 vnode.context,
1199 componentOptions,
1200 vnode.asyncFactory
1201 );
1202 cloned.ns = vnode.ns;/*当前节点的名字空间*/
1203 cloned.isStatic = vnode.isStatic;/*静态节点标志*/
1204 cloned.key = vnode.key;/*节点的key属性,被当作节点的标志,用以优化*/
1205 cloned.isComment = vnode.isComment;/*是否为注释节点*/
1206 cloned.fnContext = vnode.fnContext; //函数上下文
1207 cloned.fnOptions = vnode.fnOptions; //函数Options选项
1208 cloned.fnScopeId = vnode.fnScopeId; //函数范围id
1209 cloned.isCloned = true;
1210 /*是否为克隆节点*/
1211 if (deep) { //如果deep存在
1212 if (vnode.children) { //如果有子节点
1213 //深度拷贝子节点
1214 cloned.children = cloneVNodes(vnode.children, true);
1215 }
1216 if (componentOptions && componentOptions.children) {
1217 //深度拷贝子节点
1218 componentOptions.children = cloneVNodes(componentOptions.children, true);
1219 }
1220 }
1221 return cloned
1222 }
1223
1224 //克隆多个节点 为数组的
1225 function cloneVNodes(vnodes, deep) {

Callers 3

cloneVNodesFunction · 0.85
createElmFunction · 0.85

Calls 1

cloneVNodesFunction · 0.85

Tested by

no test coverage detected