Skip to content

Commit 220f255

Browse files
authored
fix(watch): fix watching multiple sources containing shallowRef (#5381)
fix #5371
1 parent 04fff05 commit 220f255

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

packages/runtime-core/__tests__/apiWatch.spec.ts

+15
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,21 @@ describe('api: watch', () => {
892892
expect(sideEffect).toBe(2)
893893
})
894894

895+
test('should force trigger on triggerRef when watching multiple sources: shallow ref array', async () => {
896+
const v = shallowRef([] as any)
897+
const spy = jest.fn()
898+
watch([v], () => {
899+
spy()
900+
})
901+
902+
v.value.push(1)
903+
triggerRef(v)
904+
905+
await nextTick()
906+
// should trigger now
907+
expect(spy).toHaveBeenCalledTimes(1)
908+
})
909+
895910
// #2125
896911
test('watchEffect should not recursively trigger itself', async () => {
897912
const spy = jest.fn()

packages/runtime-core/src/apiWatch.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ function doWatch(
212212
deep = true
213213
} else if (isArray(source)) {
214214
isMultiSource = true
215-
forceTrigger = source.some(isReactive)
215+
forceTrigger = source.some(s => isReactive(s) || isShallow(s))
216216
getter = () =>
217217
source.map(s => {
218218
if (isRef(s)) {

0 commit comments

Comments
 (0)