fix(reactivity): computed should not be detected as true by isProxy (#10401)

This commit is contained in:
Wick 2024-04-15 22:55:37 +08:00 committed by GitHub
parent 37ba93c213
commit 9da34d7af8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 32 additions and 3 deletions

View File

@ -1,5 +1,14 @@
import { isRef, ref } from '../src/ref'
import { isReactive, markRaw, reactive, toRaw } from '../src/reactive'
import {
isProxy,
isReactive,
markRaw,
reactive,
readonly,
shallowReactive,
shallowReadonly,
toRaw,
} from '../src/reactive'
import { computed } from '../src/computed'
import { effect } from '../src/effect'
@ -330,4 +339,24 @@ describe('reactivity/reactive', () => {
delete obj[key]
expect(dummy).toBe(false)
})
test('isProxy', () => {
const foo = {}
expect(isProxy(foo)).toBe(false)
const fooRe = reactive(foo)
expect(isProxy(fooRe)).toBe(true)
const fooSRe = shallowReactive(foo)
expect(isProxy(fooSRe)).toBe(true)
const barRl = readonly(foo)
expect(isProxy(barRl)).toBe(true)
const barSRl = shallowReadonly(foo)
expect(isProxy(barSRl)).toBe(true)
const c = computed(() => {})
expect(isProxy(c)).toBe(false)
})
})

View File

@ -329,8 +329,8 @@ export function isShallow(value: unknown): boolean {
* @param value - The value to check.
* @see {@link https://vuejs.org/api/reactivity-utilities.html#isproxy}
*/
export function isProxy(value: unknown): boolean {
return isReactive(value) || isReadonly(value)
export function isProxy(value: any): boolean {
return value ? !!value[ReactiveFlags.RAW] : false
}
/**