File tree Expand file tree Collapse file tree 2 files changed +32
-6
lines changed
Expand file tree Collapse file tree 2 files changed +32
-6
lines changed Original file line number Diff line number Diff line change @@ -198,16 +198,16 @@ export function proxyRefs<T extends object>(
198198 for ( const key of Object . keys ( objectWithRefs ) ) {
199199 proxy ( value , key , {
200200 get ( ) {
201- if ( isRef ( value [ key ] ) ) {
202- return value [ key ] . value
201+ if ( isRef ( value [ RefKey ] [ key ] ) ) {
202+ return value [ RefKey ] [ key ] . value
203203 }
204- return value [ key ]
204+ return value [ RefKey ] [ key ]
205205 } ,
206206 set ( v : unknown ) {
207- if ( isRef ( value [ key ] ) ) {
208- return ( value [ key ] . value = unref ( v ) )
207+ if ( isRef ( value [ RefKey ] [ key ] ) ) {
208+ return ( value [ RefKey ] [ key ] . value = unref ( v ) )
209209 }
210- value [ key ] = unref ( v )
210+ value [ RefKey ] [ key ] = unref ( v )
211211 } ,
212212 } )
213213 }
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import {
1212 unref ,
1313 isReactive ,
1414 shallowRef ,
15+ proxyRefs ,
1516} from '../../../src'
1617
1718describe ( 'reactivity/ref' , ( ) => {
@@ -342,4 +343,29 @@ describe('reactivity/ref', () => {
342343 _trigger ! ( )
343344 expect ( dummy ) . toBe ( 2 )
344345 } )
346+
347+ test ( 'proxyRefs' , ( ) => {
348+ const a = {
349+ x : ref ( 1 ) ,
350+ obj : {
351+ y : ref ( 'foo' ) ,
352+ } ,
353+ }
354+ const p = proxyRefs ( a )
355+ expect ( p . x ) . toBe ( 1 )
356+ expect ( p . obj . y ) . toBe ( 'foo' )
357+
358+ // @ts -expect-error
359+ p . obj . y = 'bar'
360+ p . x = 2
361+ expect ( a . x ) . toBe ( 2 )
362+ expect ( a . obj . y ) . toBe ( 'bar' )
363+
364+ const r = reactive ( { k : 'v' } )
365+ const s = proxyRefs ( r )
366+ expect ( s . k ) . toBe ( 'v' )
367+
368+ r . k = 'k'
369+ expect ( s . k ) . toBe ( 'k' )
370+ } )
345371} )
You can’t perform that action at this time.
0 commit comments