File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -156,7 +156,7 @@ export function shallowReactive(obj: any): any {
156
156
return obj as any
157
157
}
158
158
159
- const observed = observe ( { } )
159
+ const observed = observe ( isArray ( obj ) ? [ ] : { } )
160
160
setupAccessControl ( observed )
161
161
162
162
const ob = ( observed as any ) . __ob__
Original file line number Diff line number Diff line change @@ -206,6 +206,24 @@ describe('reactivity/reactive', () => {
206
206
props . n = reactive ( { foo : 2 } )
207
207
expect ( isReactive ( props . n ) ) . toBe ( true )
208
208
} )
209
+
210
+ test ( 'should keep array as array' , ( ) => {
211
+ const arr = [ 1 , 2 , 3 ]
212
+ const shallowReactiveArr = shallowReactive ( arr )
213
+ expect ( Array . isArray ( shallowReactiveArr ) ) . toBe ( true )
214
+ expect ( shallowReactiveArr . join ( ' ' ) ) . toBe ( arr . join ( ' ' ) )
215
+ } )
216
+
217
+ test ( 'should trigger computed when changed' , ( ) => {
218
+ const arr = Array ( 10 ) . fill ( 0 )
219
+ const shallowReactiveArr = shallowReactive ( arr )
220
+ const sum = computed ( ( ) =>
221
+ shallowReactiveArr . reduce ( ( acc , cur ) => acc + cur , 0 )
222
+ )
223
+ expect ( sum . value ) . toBe ( 0 )
224
+ shallowReactiveArr [ 0 ] = 1
225
+ expect ( sum . value ) . toBe ( 1 )
226
+ } )
209
227
} )
210
228
211
229
test ( 'should shallowReactive non-observable values' , ( ) => {
You can’t perform that action at this time.
0 commit comments