leave() — vue Function Reference
Architecture documentation for the leave() function in transition.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD bb5c970d_2e75_b59b_6ddf_fe4f60d2e887["leave()"] 7252c3d1_00b4_fa7a_aff5_325056c580fa["default.update()"] 7252c3d1_00b4_fa7a_aff5_325056c580fa -->|calls| bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 685afeca_5fcd_0360_7921_55babe351380["default.remove()"] 685afeca_5fcd_0360_7921_55babe351380 -->|calls| bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 5b855538_2046_796e_16f9_7327a61399cb["isDef()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 5b855538_2046_796e_16f9_7327a61399cb 15b015fc_372e_005b_54dc_67a7bfbde5be["resolveTransition()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 15b015fc_372e_005b_54dc_67a7bfbde5be 299f2646_f776_9b7d_1179_7b9087b1e66c["isUndef()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 299f2646_f776_9b7d_1179_7b9087b1e66c ef3b1734_589d_ca16_c8a8_f015ea1202b6["getHookArgumentsLength()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| ef3b1734_589d_ca16_c8a8_f015ea1202b6 f5c3f348_7420_2758_1e07_011bdc52d282["toNumber()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| f5c3f348_7420_2758_1e07_011bdc52d282 3d975ef8_6070_36a5_82f8_9180576e2ca1["isObject()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 3d975ef8_6070_36a5_82f8_9180576e2ca1 487bc2a1_c3e0_3929_69c5_7a7737ce683e["checkDuration()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 487bc2a1_c3e0_3929_69c5_7a7737ce683e a8e0e452_e7c0_9fb5_f4fe_58e890a49204["once()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| a8e0e452_e7c0_9fb5_f4fe_58e890a49204 d0ac78d7_5041_1236_9a5b_88482b24b402["removeTransitionClass()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| d0ac78d7_5041_1236_9a5b_88482b24b402 5da207be_c15b_b75c_a486_6bdb569d90ee["addTransitionClass()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 5da207be_c15b_b75c_a486_6bdb569d90ee 0e1364f1_8abe_894a_f04e_cd3f2bfbd496["nextFrame()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 0e1364f1_8abe_894a_f04e_cd3f2bfbd496 461e09a3_b036_90c1_eaa2_96c1cdd85229["isValidDuration()"] bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 -->|calls| 461e09a3_b036_90c1_eaa2_96c1cdd85229 style bb5c970d_2e75_b59b_6ddf_fe4f60d2e887 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
src/platforms/web/runtime/modules/transition.ts lines 169–275
export function leave(vnode: VNodeWithData, rm: Function) {
const el: any = vnode.elm
// call enter callback now
if (isDef(el._enterCb)) {
el._enterCb.cancelled = true
el._enterCb()
}
const data = resolveTransition(vnode.data.transition)
if (isUndef(data) || el.nodeType !== 1) {
return rm()
}
/* istanbul ignore if */
if (isDef(el._leaveCb)) {
return
}
const {
css,
type,
leaveClass,
leaveToClass,
leaveActiveClass,
beforeLeave,
leave,
afterLeave,
leaveCancelled,
delayLeave,
duration
} = data
const expectsCSS = css !== false && !isIE9
const userWantsControl = getHookArgumentsLength(leave)
const explicitLeaveDuration: any = toNumber(
isObject(duration) ? duration.leave : duration
)
if (__DEV__ && isDef(explicitLeaveDuration)) {
checkDuration(explicitLeaveDuration, 'leave', vnode)
}
const cb = (el._leaveCb = once(() => {
if (el.parentNode && el.parentNode._pending) {
el.parentNode._pending[vnode.key!] = null
}
if (expectsCSS) {
removeTransitionClass(el, leaveToClass)
removeTransitionClass(el, leaveActiveClass)
}
// @ts-expect-error
if (cb.cancelled) {
if (expectsCSS) {
removeTransitionClass(el, leaveClass)
}
leaveCancelled && leaveCancelled(el)
} else {
rm()
afterLeave && afterLeave(el)
}
el._leaveCb = null
}))
if (delayLeave) {
delayLeave(performLeave)
} else {
performLeave()
}
function performLeave() {
// the delayed leave may have already been cancelled
// @ts-expect-error
if (cb.cancelled) {
return
}
// record leaving element
if (!vnode.data.show && el.parentNode) {
;(el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key!] =
vnode
}
beforeLeave && beforeLeave(el)
if (expectsCSS) {
addTransitionClass(el, leaveClass)
addTransitionClass(el, leaveActiveClass)
nextFrame(() => {
removeTransitionClass(el, leaveClass)
// @ts-expect-error
if (!cb.cancelled) {
addTransitionClass(el, leaveToClass)
if (!userWantsControl) {
if (isValidDuration(explicitLeaveDuration)) {
setTimeout(cb, explicitLeaveDuration)
} else {
whenTransitionEnds(el, type, cb)
}
}
}
})
}
leave && leave(el, cb)
if (!expectsCSS && !userWantsControl) {
cb()
}
}
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does leave() do?
leave() is a function in the vue codebase.
What does leave() call?
leave() calls 13 function(s): addTransitionClass, checkDuration, getHookArgumentsLength, isDef, isObject, isUndef, isValidDuration, nextFrame, and 5 more.
What calls leave()?
leave() is called by 2 function(s): default.remove, default.update.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free