@@ -17,22 +17,54 @@ export function resetTracking () {
1717 shouldTrack = last === undefined ? true : last
1818}
1919
20+ global . __setMpxReactiveEffect = ( value ) => { }
21+
2022export class ReactiveEffect {
2123 active = true
2224 deps = [ ]
2325 newDeps = [ ]
2426 depIds = new Set ( )
2527 newDepIds = new Set ( )
2628 allowRecurse = false
29+ debug = 0
30+ name = 'no-name'
2731
2832 constructor (
2933 fn ,
3034 scheduler ,
31- scope
35+ scope ,
36+ debug ,
37+ name
3238 ) {
39+ this . debug = debug || 0
40+ this . name = name || 'no-name'
3341 this . id = ++ uid
34- this . fn = fn
35- this . scheduler = scheduler
42+ this . fn = ( ...args ) => {
43+ this . debug > 0 && console . log ( `[Mpx Effect] id:${ this . id } name: ${ this . name } will run` )
44+ this . debug > 1 && console . log ( new Error ( ) . stack )
45+ const t = global . __setMpxReactiveEffect
46+ global . __setMpxReactiveEffect = ( option ) => {
47+ Object . entries ( option ) . forEach ( ( [ key , value ] ) => {
48+ this [ key ] = value
49+ } )
50+ }
51+ const result = fn ( ...args )
52+ global . __setMpxReactiveEffect = t
53+ return result
54+ }
55+ this . scheduler = ( ...args ) => {
56+ this . debug > 0 && console . log ( `[Mpx Effect] id:${ this . id } name: ${ this . name } will scheduled` )
57+ this . debug > 1 && console . log ( new Error ( ) . stack )
58+ const t = global . __setMpxReactiveEffect
59+ global . __setMpxReactiveEffect = ( option ) => {
60+ Object . entries ( option ) . forEach ( ( [ key , value ] ) => {
61+ this [ key ] = value
62+ } )
63+ }
64+ const result = scheduler ( ...args )
65+ global . __setMpxReactiveEffect = t
66+ return result
67+ }
3668 this . pausedState = PausedState . resumed
3769 recordEffectScope ( this , scope )
3870 }
@@ -85,12 +117,16 @@ export class ReactiveEffect {
85117 }
86118
87119 // same as trigger
88- update ( ) {
120+ update ( key , value , stack ) {
89121 // avoid dead cycle
90122 if ( Dep . target !== this || this . allowRecurse ) {
91123 if ( this . pausedState !== PausedState . resumed ) {
124+ this . debug > 0 && console . log ( `[Mpx Effect] id:${ this . id } name: ${ this . name } pausedState will set to dirty with, from ${ key } : ${ value } ` )
125+ this . debug > 1 && console . log ( stack )
92126 this . pausedState = PausedState . dirty
93127 } else {
128+ this . debug > 0 && console . log ( `[Mpx Effect] id:${ this . id } name: ${ this . name } will updated, from ${ key } : ${ value } ` )
129+ this . debug > 1 && console . log ( stack )
94130 this . scheduler ? this . scheduler ( ) : this . run ( )
95131 }
96132 }
0 commit comments