From 7ad289e1e7fea654524008ff91e43a8b8a55ef22 Mon Sep 17 00:00:00 2001 From: Tycho Date: Fri, 11 Oct 2024 10:39:08 +0800 Subject: [PATCH] fix(reactivity): trigger reactivity for Map key `undefined` (#12055) close #12054 --- packages/reactivity/__tests__/reactive.spec.ts | 10 ++++++++++ packages/reactivity/src/dep.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/reactivity/__tests__/reactive.spec.ts b/packages/reactivity/__tests__/reactive.spec.ts index 47f6aa297ec..aabd954568a 100644 --- a/packages/reactivity/__tests__/reactive.spec.ts +++ b/packages/reactivity/__tests__/reactive.spec.ts @@ -409,4 +409,14 @@ describe('reactivity/reactive', () => { e.effect.stop() expect(targetMap.get(obj)?.get('x')).toBeFalsy() }) + + test('should trigger reactivity when Map key is undefined', () => { + const map = reactive(new Map()) + const c = computed(() => map.get(void 0)) + + expect(c.value).toBe(void 0) + + map.set(void 0, 1) + expect(c.value).toBe(1) + }) }) diff --git a/packages/reactivity/src/dep.ts b/packages/reactivity/src/dep.ts index 7e404874348..196c2aaf98e 100644 --- a/packages/reactivity/src/dep.ts +++ b/packages/reactivity/src/dep.ts @@ -340,7 +340,7 @@ export function trigger( }) } else { // schedule runs for SET | ADD | DELETE - if (key !== void 0) { + if (key !== void 0 || depsMap.has(void 0)) { run(depsMap.get(key)) }