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 {
156156 return obj as any
157157 }
158158
159- const observed = observe ( { } )
159+ const observed = observe ( isArray ( obj ) ? [ ] : { } )
160160 setupAccessControl ( observed )
161161
162162 const ob = ( observed as any ) . __ob__
Original file line number Diff line number Diff line change @@ -206,6 +206,24 @@ describe('reactivity/reactive', () => {
206206 props . n = reactive ( { foo : 2 } )
207207 expect ( isReactive ( props . n ) ) . toBe ( true )
208208 } )
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+ } )
209227 } )
210228
211229 test ( 'should shallowReactive non-observable values' , ( ) => {
You can’t perform that action at this time.
0 commit comments