File tree 4 files changed +35
-2
lines changed
4 files changed +35
-2
lines changed Original file line number Diff line number Diff line change 3
3
effect ,
4
4
reactive ,
5
5
isRef ,
6
+ toRef ,
6
7
toRefs ,
7
8
Ref ,
8
9
isReactive
@@ -168,6 +169,34 @@ describe('reactivity/ref', () => {
168
169
expect ( isRef ( { value : 0 } ) ) . toBe ( false )
169
170
} )
170
171
172
+ test ( 'toRef' , ( ) => {
173
+ const a = reactive ( {
174
+ x : 1
175
+ } )
176
+ const x = toRef ( a , 'x' )
177
+ expect ( isRef ( x ) ) . toBe ( true )
178
+ expect ( x . value ) . toBe ( 1 )
179
+
180
+ // source -> proxy
181
+ a . x = 2
182
+ expect ( x . value ) . toBe ( 2 )
183
+
184
+ // proxy -> source
185
+ x . value = 3
186
+ expect ( a . x ) . toBe ( 3 )
187
+
188
+ // reactivity
189
+ let dummyX
190
+ effect ( ( ) => {
191
+ dummyX = x . value
192
+ } )
193
+ expect ( dummyX ) . toBe ( x . value )
194
+
195
+ // mutating source should trigger effect using the proxy refs
196
+ a . x = 4
197
+ expect ( dummyX ) . toBe ( 4 )
198
+ } )
199
+
171
200
test ( 'toRefs' , ( ) => {
172
201
const a = reactive ( {
173
202
x : 1 ,
@@ -224,6 +253,8 @@ describe('reactivity/ref', () => {
224
253
}
225
254
} ) )
226
255
256
+ expect ( isRef ( custom ) ) . toBe ( true )
257
+
227
258
let dummy
228
259
effect ( ( ) => {
229
260
dummy = custom . value
Original file line number Diff line number Diff line change 3
3
unref ,
4
4
shallowRef ,
5
5
isRef ,
6
+ toRef ,
6
7
toRefs ,
7
8
customRef ,
8
9
Ref ,
Original file line number Diff line number Diff line change @@ -103,12 +103,12 @@ export function toRefs<T extends object>(
103
103
}
104
104
const ret : any = { }
105
105
for ( const key in object ) {
106
- ret [ key ] = toProxyRef ( object , key )
106
+ ret [ key ] = toRef ( object , key )
107
107
}
108
108
return ret
109
109
}
110
110
111
- function toProxyRef < T extends object , K extends keyof T > (
111
+ export function toRef < T extends object , K extends keyof T > (
112
112
object : T ,
113
113
key : K
114
114
) : Ref < T [ K ] > {
Original file line number Diff line number Diff line change 6
6
unref ,
7
7
shallowRef ,
8
8
isRef ,
9
+ toRef ,
9
10
toRefs ,
10
11
customRef ,
11
12
reactive ,
You can’t perform that action at this time.
0 commit comments