isFunction,
isString,
hasChanged,
- NOOP
+ NOOP,
+ remove
} from '@vue/shared'
import {
currentInstance,
return () => {
stop(runner)
if (instance) {
- const effects = instance.effects!
- const index = effects.indexOf(runner)
- if (index > -1) {
- effects.splice(index, 1)
- }
+ remove(instance.effects!, runner)
}
}
}
import { VNode, cloneVNode, isVNode, VNodeProps } from '../vnode'
import { warn } from '../warning'
import { onBeforeUnmount, injectHook, onUnmounted } from '../apiLifecycle'
-import { isString, isArray, ShapeFlags } from '@vue/shared'
+import { isString, isArray, ShapeFlags, remove } from '@vue/shared'
import { watch } from '../apiWatch'
import { SuspenseBoundary } from './Suspense'
import {
) {
injectHook(type, hook, keepAliveRoot, true /* prepend */)
onUnmounted(() => {
- const hooks = keepAliveRoot[type]!
- hooks.splice(hooks.indexOf(hook), 1)
+ remove(keepAliveRoot[type]!, hook)
}, target)
}
return a as any
}
+export const remove = <T>(arr: T[], el: T) => {
+ const i = arr.indexOf(el)
+ if (i > -1) {
+ arr.splice(i, 1)
+ }
+}
+
const hasOwnProperty = Object.prototype.hasOwnProperty
export const hasOwn = (
val: object,