fix(watch): fix watching multiple sources containing shallowRef (#5381)

fix #5371
This commit is contained in:
edison 2022-05-13 08:20:04 +08:00 committed by GitHub
parent 04fff05f00
commit 220f255fe9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -892,6 +892,21 @@ describe('api: watch', () => {
expect(sideEffect).toBe(2)
})
test('should force trigger on triggerRef when watching multiple sources: shallow ref array', async () => {
const v = shallowRef([] as any)
const spy = jest.fn()
watch([v], () => {
spy()
})
v.value.push(1)
triggerRef(v)
await nextTick()
// should trigger now
expect(spy).toHaveBeenCalledTimes(1)
})
// #2125
test('watchEffect should not recursively trigger itself', async () => {
const spy = jest.fn()

View File

@ -212,7 +212,7 @@ function doWatch(
deep = true
} else if (isArray(source)) {
isMultiSource = true
forceTrigger = source.some(isReactive)
forceTrigger = source.some(s => isReactive(s) || isShallow(s))
getter = () =>
source.map(s => {
if (isRef(s)) {