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>(
198
198
for ( const key of Object . keys ( objectWithRefs ) ) {
199
199
proxy ( value , key , {
200
200
get ( ) {
201
- if ( isRef ( value [ key ] ) ) {
202
- return value [ key ] . value
201
+ if ( isRef ( value [ RefKey ] [ key ] ) ) {
202
+ return value [ RefKey ] [ key ] . value
203
203
}
204
- return value [ key ]
204
+ return value [ RefKey ] [ key ]
205
205
} ,
206
206
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 ) )
209
209
}
210
- value [ key ] = unref ( v )
210
+ value [ RefKey ] [ key ] = unref ( v )
211
211
} ,
212
212
} )
213
213
}
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import {
12
12
unref ,
13
13
isReactive ,
14
14
shallowRef ,
15
+ proxyRefs ,
15
16
} from '../../../src'
16
17
17
18
describe ( 'reactivity/ref' , ( ) => {
@@ -342,4 +343,29 @@ describe('reactivity/ref', () => {
342
343
_trigger ! ( )
343
344
expect ( dummy ) . toBe ( 2 )
344
345
} )
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
+ } )
345
371
} )
You can’t perform that action at this time.
0 commit comments