(
vnode, //新的vonde
insertedVnodeQueue,//
parentElm,
refElm
)
| 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中 |
no test coverage detected