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

Function leave

vue.js:11356–11471  ·  view source on GitHub ↗
(
        vnode,  //虚拟dom
        rm      //回调函数                  
    )

Source from the content-addressed store, hash-verified

11354 }
11355 //执行离开过度动画效果执行方式
11356 function leave(
11357 vnode, //虚拟dom
11358 rm //回调函数
11359 ) {
11360 var el = vnode.elm;
11361
11362 // call enter callback now
11363 if (isDef(el._enterCb)) { //标志是否执行过_enterCb
11364 el._enterCb.cancelled = true; //取消
11365 el._enterCb();
11366 }
11367 //解析vonde中的transition的name属性获取到一个css过度对象类
11368 var data = resolveTransition(vnode.data.transition);
11369
11370 if (isUndef(data) || el.nodeType !== 1) {
11371 return rm()
11372 }
11373
11374 /* istanbul ignore if */
11375 if (isDef(el._leaveCb)) {
11376 return
11377 }
11378
11379 var css = data.css; //vonde 的css类
11380 var type = data.type; //vonde 的 类型 如 1,2,3,4.真实dom的类型
11381 var leaveClass = data.leaveClass; //离开动画的css 动画过度类
11382 var leaveToClass = data.leaveToClass; //离开动画的css 动画过度类
11383 var leaveActiveClass = data.leaveActiveClass;//激活离开动画的css 动画过度类
11384
11385 var beforeLeave = data.beforeLeave; //离开动画的钩子函数
11386 var leave = data.leave; //离开动画的钩子函数
11387 var afterLeave = data.afterLeave;//离开动画的钩子函数
11388 var leaveCancelled = data.leaveCancelled;//离开动画的钩子函数
11389 var delayLeave = data.delayLeave; //延迟动画钩子函数
11390 var duration = data.duration; //动画时长
11391
11392 var expectsCSS = css !== false && !isIE9;
11393
11394 // 检测钩子函数 fns 的长度
11395 // 数据必须是这样才返回真,也可以是n层fns只要规律是一样嵌套下去就行
11396 var userWantsControl = getHookArgumentsLength(leave);
11397
11398 var explicitLeaveDuration = toNumber(
11399 isObject(duration)
11400 ? duration.leave
11401 : duration
11402 );
11403
11404 if ("development" !== 'production' && isDef(explicitLeaveDuration)) {
11405 checkDuration(explicitLeaveDuration, 'leave', vnode);
11406 }
11407
11408 var cb = el._leaveCb = once(function () {
11409 if (el.parentNode && el.parentNode._pending) {
11410 el.parentNode._pending[vnode.key] = null;
11411 }
11412 if (expectsCSS) {
11413 removeTransitionClass(el, leaveToClass); //离开动画的css 动画过度类

Callers 2

performLeaveFunction · 0.85
vue.jsFile · 0.85

Calls 10

isDefFunction · 0.85
resolveTransitionFunction · 0.85
isUndefFunction · 0.85
getHookArgumentsLengthFunction · 0.85
toNumberFunction · 0.85
isObjectFunction · 0.85
checkDurationFunction · 0.85
onceFunction · 0.85
removeTransitionClassFunction · 0.85
performLeaveFunction · 0.85

Tested by

no test coverage detected