mirror of https://github.com/vuejs/core.git
refactor(reactivity): add instance check for effect (#9055)
This commit is contained in:
parent
5479d1e5bb
commit
e33d554cae
|
@ -585,6 +585,14 @@ describe('reactivity/effect', () => {
|
|||
expect(runner.effect.fn).toBe(otherRunner.effect.fn)
|
||||
})
|
||||
|
||||
it('should wrap if the passed function is a fake effect', () => {
|
||||
const fakeRunner = () => {}
|
||||
fakeRunner.effect = {}
|
||||
const runner = effect(fakeRunner)
|
||||
expect(fakeRunner).not.toBe(runner)
|
||||
expect(runner.effect.fn).toBe(fakeRunner)
|
||||
})
|
||||
|
||||
it('should not run multiple times for a single mutation', () => {
|
||||
let dummy
|
||||
const obj = reactive<Record<string, number>>({})
|
||||
|
|
|
@ -16,7 +16,7 @@ import { ComputedRefImpl } from './computed'
|
|||
// which maintains a Set of subscribers, but we simply store them as
|
||||
// raw Sets to reduce memory overhead.
|
||||
type KeyToDepMap = Map<any, Dep>
|
||||
const targetMap = new WeakMap<any, KeyToDepMap>()
|
||||
const targetMap = new WeakMap<object, KeyToDepMap>()
|
||||
|
||||
// The number of effects currently being tracked recursively.
|
||||
let effectTrackDepth = 0
|
||||
|
@ -181,7 +181,7 @@ export function effect<T = any>(
|
|||
fn: () => T,
|
||||
options?: ReactiveEffectOptions
|
||||
): ReactiveEffectRunner {
|
||||
if ((fn as ReactiveEffectRunner).effect) {
|
||||
if ((fn as ReactiveEffectRunner).effect instanceof ReactiveEffect) {
|
||||
fn = (fn as ReactiveEffectRunner).effect.fn
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue