leave() — vue Function Reference
Architecture documentation for the leave() function in transition.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD 29af0f73_d62b_5291_e707_1f3301bf3357["leave()"] 394714aa_8288_0f42_8564_08fb679a1d9f["default.update()"] 394714aa_8288_0f42_8564_08fb679a1d9f -->|calls| 29af0f73_d62b_5291_e707_1f3301bf3357 5862a5b2_bfcd_8fdd_0c99_eb2da864c08d["default.remove()"] 5862a5b2_bfcd_8fdd_0c99_eb2da864c08d -->|calls| 29af0f73_d62b_5291_e707_1f3301bf3357 2be3818d_a4f3_495c_543c_ee071b428982["isDef()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 2be3818d_a4f3_495c_543c_ee071b428982 42f54d00_63e8_6550_8a02_9676b3f014dd["resolveTransition()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 42f54d00_63e8_6550_8a02_9676b3f014dd a1f5b8ca_b6d5_6b24_155e_038685c97c85["isUndef()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| a1f5b8ca_b6d5_6b24_155e_038685c97c85 f8796a4d_0b93_c2df_44b2_78106ba2d82c["getHookArgumentsLength()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| f8796a4d_0b93_c2df_44b2_78106ba2d82c d2f853c8_874e_b299_f3cc_cc451ad45eea["toNumber()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| d2f853c8_874e_b299_f3cc_cc451ad45eea 2d184c1f_e247_ef28_44f9_122886cfd2a5["isObject()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 2d184c1f_e247_ef28_44f9_122886cfd2a5 ab290258_9761_9c78_cb21_a18b70c9dafd["checkDuration()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| ab290258_9761_9c78_cb21_a18b70c9dafd f1f4b24d_509b_4634_bd6a_d3b0e91f0b48["once()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| f1f4b24d_509b_4634_bd6a_d3b0e91f0b48 90afa8b0_bab8_d609_1928_b82464e9f59a["removeTransitionClass()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 90afa8b0_bab8_d609_1928_b82464e9f59a 8604834e_72c7_6a5f_2bab_e07b77f57174["addTransitionClass()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 8604834e_72c7_6a5f_2bab_e07b77f57174 68f648cf_1e2d_1c74_f13a_e4c2bb617bc5["nextFrame()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 68f648cf_1e2d_1c74_f13a_e4c2bb617bc5 59a6b470_bd82_8984_e2ea_f9b6bb26dd77["isValidDuration()"] 29af0f73_d62b_5291_e707_1f3301bf3357 -->|calls| 59a6b470_bd82_8984_e2ea_f9b6bb26dd77 style 29af0f73_d62b_5291_e707_1f3301bf3357 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