fix(reactivity): toRef
should not wrap a ref
(#2103)
This commit is contained in:
parent
aa8dc9a507
commit
d4bf9bcbb4
@ -236,6 +236,10 @@ describe('reactivity/ref', () => {
|
||||
// mutating source should trigger effect using the proxy refs
|
||||
a.x = 4
|
||||
expect(dummyX).toBe(4)
|
||||
|
||||
// should keep ref
|
||||
const r = { x: ref(1) }
|
||||
expect(toRef(r, 'x')).toBe(r.x)
|
||||
})
|
||||
|
||||
test('toRefs', () => {
|
||||
@ -292,12 +296,12 @@ describe('reactivity/ref', () => {
|
||||
test('toRefs reactive array', () => {
|
||||
const arr = reactive(['a', 'b', 'c'])
|
||||
const refs = toRefs(arr)
|
||||
|
||||
|
||||
expect(Array.isArray(refs)).toBe(true)
|
||||
|
||||
|
||||
refs[0].value = '1'
|
||||
expect(arr[0]).toBe('1')
|
||||
|
||||
|
||||
arr[1] = '2'
|
||||
expect(refs[1].value).toBe('2')
|
||||
})
|
||||
|
@ -168,7 +168,9 @@ export function toRef<T extends object, K extends keyof T>(
|
||||
object: T,
|
||||
key: K
|
||||
): Ref<T[K]> {
|
||||
return new ObjectRefImpl(object, key) as any
|
||||
return isRef(object[key])
|
||||
? object[key]
|
||||
: (new ObjectRefImpl(object, key) as any)
|
||||
}
|
||||
|
||||
// corner case when use narrows type
|
||||
|
Loading…
x
Reference in New Issue
Block a user