From dbfc9e0c826f36d14b5aa14c1e78e25c560dcdd7 Mon Sep 17 00:00:00 2001 From: linzhe141 <1572213544@qq.com> Date: Fri, 20 Sep 2024 17:35:30 +0800 Subject: [PATCH 1/2] fix(reactivity): fix triggerRef to handle ObjectRefImpl instances --- packages/reactivity/src/ref.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index a72e52090dd..797bf9c102b 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -182,15 +182,19 @@ class RefImpl { * @see {@link https://vuejs.org/api/reactivity-advanced.html#triggerref} */ export function triggerRef(ref: Ref): void { - if (__DEV__) { - ;(ref as unknown as RefImpl).dep.trigger({ - target: ref, - type: TriggerOpTypes.SET, - key: 'value', - newValue: (ref as unknown as RefImpl)._value, - }) - } else { - ;(ref as unknown as RefImpl).dep.trigger() + // ref may be an instance of ObjectRefImpl + const dep = (ref as unknown as RefImpl).dep + if (dep) { + if (__DEV__) { + dep.trigger({ + target: ref, + type: TriggerOpTypes.SET, + key: 'value', + newValue: (ref as unknown as RefImpl)._value, + }) + } else { + dep.trigger() + } } } From c7aae75a2633e43d38f887e62635cf153fb2e8ab Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 20 Sep 2024 20:46:08 +0800 Subject: [PATCH 2/2] Update ref.ts --- packages/reactivity/src/ref.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index 797bf9c102b..1de8b9e3317 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -183,17 +183,16 @@ class RefImpl { */ export function triggerRef(ref: Ref): void { // ref may be an instance of ObjectRefImpl - const dep = (ref as unknown as RefImpl).dep - if (dep) { + if ((ref as unknown as RefImpl).dep) { if (__DEV__) { - dep.trigger({ + ;(ref as unknown as RefImpl).dep.trigger({ target: ref, type: TriggerOpTypes.SET, key: 'value', newValue: (ref as unknown as RefImpl)._value, }) } else { - dep.trigger() + ;(ref as unknown as RefImpl).dep.trigger() } } }