MCPcopy Index your code
hub / github.com/ygs-code/vue / reactivateComponent

Function reactivateComponent

vue.js:8254–8289  ·  view source on GitHub ↗
(
            vnode, //新的vonde
            insertedVnodeQueue,//
            parentElm,
            refElm
        )

Source from the content-addressed store, hash-verified

8252
8253 //激活组建。把vonde添加到parentElm中。如果是transition组件则 调用 transition中的activate就是_enter
8254 function reactivateComponent(
8255 vnode, //新的vonde
8256 insertedVnodeQueue,//
8257 parentElm,
8258 refElm
8259 ) {
8260 var i;
8261 // hack for #4339: a reactivated component with inner transition
8262 // does not trigger because the inner node's created hooks are not called
8263 // again. It's not ideal to involve module-specific logic in here but
8264 // there doesn't seem to be a better way to do it.
8265 //破解#4339:一个内部转换的重新激活的组件
8266 //不触发,因为没有调用内部节点创建的钩子
8267 //一次。在这里使用特定于模块的逻辑并不理想,但是
8268 //似乎没有比这更好的方法了。
8269 var innerNode = vnode;
8270 while (innerNode.componentInstance) { //如果已经实例过的
8271 innerNode = innerNode.componentInstance._vnode; // 标志上一个 vonde 就是旧的 vonde
8272 if (isDef(i = innerNode.data) && isDef(i = i.transition)) { //如果是transition 组件 _enter
8273 for (i = 0; i < cbs.activate.length; ++i) {
8274 cbs.activate[i](emptyNode, innerNode); //调用 transition中的activate就是_enter
8275 }
8276 insertedVnodeQueue.push(innerNode);
8277 break
8278 }
8279 }
8280 // unlike a newly created component,
8281 // a reactivated keep-alive component doesn't insert itself
8282 //与新创建的组件不同,
8283 //重新激活的keep-alive组件不会插入
8284 insert(
8285 parentElm, //父真实dom
8286 vnode.elm, //当前vonde的真实dom
8287 refElm //当前vonde的真实dom的兄弟节点或者不是
8288 );
8289 }
8290
8291 //插入一个真实的dom,如果ref$$1.parentNode等于parent是。ref$$1和elm他们是兄弟节点则插入ref$$1前面
8292 //如果ref$$1的ref$$1.parentNode不等于parent。那么elm就直接append到parent中

Callers 1

createComponentFunction · 0.85

Calls 2

isDefFunction · 0.85
insertFunction · 0.85

Tested by

no test coverage detected