我正在檢查一些源代碼,以確保在組件被破壞并運行到scope.cleanups(來自https://github.com/vueuse/vueuse/blob/main/packages/core/useEventBus/index .ts):
const scope = getCurrentScope()
scope?.cleanups?.push(/* handler */)
這是onScopeDispose(https://vuejs.org/api/reactivity-advanced.html#onscopedispose)的無證替代品嗎?我似乎找不到任何關于它的資訊。
uj5u.com熱心網友回復:
scope?.cleanups?.push()幾乎是相同的實作onScopeDispose():
export function getCurrentScope() {
return activeEffectScope
}
export function onScopeDispose(fn: () => void) {
if (activeEffectScope) {
activeEffectScope.cleanups.push(fn) ??
}
?
}
一個顯著的區別cleanups是onScopeDispose(). 該行中的 git blameuseEventBus()表示添加了可選鏈接,因為cleanups在 Vue 2 中可能未定義/為空。
似乎使用官方 API ( onScopeDispose()) 是更好的選擇,因為cleanups它本質上是一個用戶不應該知道的私有實作細節。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484196.html
標籤:Vue.js Vuejs3 vue-composition-api
