File tree Expand file tree Collapse file tree 2 files changed +24
-2
lines changed Expand file tree Collapse file tree 2 files changed +24
-2
lines changed Original file line number Diff line number Diff line change 66 TrackOpTypes ,
77 TriggerOpTypes ,
88 DebuggerEvent ,
9- markRaw
9+ markRaw ,
10+ shallowReactive
1011} from '../src/index'
1112import { ITERATE_KEY } from '../src/effect'
1213
@@ -811,4 +812,24 @@ describe('reactivity/effect', () => {
811812 expect ( dummy ) . toBe ( 0 )
812813 expect ( record ) . toBeUndefined ( )
813814 } )
815+
816+ it ( 'should trigger once effect when set the equal proxy' , ( ) => {
817+ const obj = reactive ( { foo : 1 } )
818+ const observed : any = reactive ( { obj } )
819+ const fnSpy = jest . fn ( ( ) => observed . obj )
820+
821+ effect ( fnSpy )
822+
823+ observed . obj = obj
824+ expect ( fnSpy ) . toHaveBeenCalledTimes ( 1 )
825+
826+ const obj2 = reactive ( { foo : 1 } )
827+ const observed2 : any = shallowReactive ( { obj2 } )
828+ const fnSpy2 = jest . fn ( ( ) => observed2 . obj2 )
829+
830+ effect ( fnSpy2 )
831+
832+ observed2 . obj2 = obj2
833+ expect ( fnSpy2 ) . toHaveBeenCalledTimes ( 1 )
834+ } )
814835} )
Original file line number Diff line number Diff line change @@ -146,9 +146,10 @@ function createSetter(shallow = false) {
146146 value : unknown ,
147147 receiver : object
148148 ) : boolean {
149- const oldValue = ( target as any ) [ key ]
149+ let oldValue = ( target as any ) [ key ]
150150 if ( ! shallow ) {
151151 value = toRaw ( value )
152+ oldValue = toRaw ( oldValue )
152153 if ( ! isArray ( target ) && isRef ( oldValue ) && ! isRef ( value ) ) {
153154 oldValue . value = value
154155 return true
You can’t perform that action at this time.
0 commit comments