@@ -83,7 +83,7 @@ export const createHook = <Config extends IConfiguration>(
8383 : { }
8484 }
8585 const useForceRerender = ( ) => {
86- const [ , setState ] = useState ( ( ) => true )
86+ const [ flushId , setState ] = useState ( ( ) => - 1 )
8787 const mountedRef = useRef ( true )
8888
8989 useEffect (
@@ -98,7 +98,10 @@ export const createHook = <Config extends IConfiguration>(
9898 setState ( flushId )
9999 }
100100 }
101- return forceRerender
101+ return {
102+ forceRerender,
103+ flushId,
104+ }
102105 }
103106
104107 return ( ) => {
@@ -125,9 +128,7 @@ export const createHook = <Config extends IConfiguration>(
125128 )
126129
127130 if ( IS_PRODUCTION ) {
128- const rerenderComponent = useForceRerender ( )
129-
130- tree . track ( rerenderComponent )
131+ const { forceRerender } = useForceRerender ( )
131132
132133 useEffect (
133134 ( ) => ( ) => {
@@ -137,6 +138,8 @@ export const createHook = <Config extends IConfiguration>(
137138 )
138139
139140 useLayoutEffect ( ( ) => tree . stopTracking ( ) )
141+
142+ tree . track ( forceRerender )
140143 } else {
141144 const component = useCurrentComponent ( )
142145 const name = component . name
@@ -149,22 +152,9 @@ export const createHook = <Config extends IConfiguration>(
149152 currentComponentInstanceId ++
150153 )
151154
152- const rerenderComponent = useForceRerender ( )
153-
154- tree . track ( ( _ , __ , flushId ) => {
155- rerenderComponent ( _ , __ , flushId )
156- overmind . eventHub . emitAsync ( EventType . COMPONENT_UPDATE , {
157- componentId : component . __componentId ,
158- componentInstanceId,
159- name,
160- flushId,
161- paths : Array . from ( tree . pathDependencies ) as any ,
162- } )
163- } )
164-
165- useLayoutEffect ( ( ) => tree . stopTracking ( ) )
155+ const { flushId, forceRerender } = useForceRerender ( )
166156
167- useEffect ( ( ) => {
157+ useLayoutEffect ( ( ) => {
168158 overmind . eventHub . emitAsync ( EventType . COMPONENT_ADD , {
169159 componentId : component . __componentId ,
170160 componentInstanceId,
@@ -181,6 +171,18 @@ export const createHook = <Config extends IConfiguration>(
181171 } )
182172 }
183173 } , [ ] )
174+
175+ useLayoutEffect ( ( ) => {
176+ tree . stopTracking ( )
177+ overmind . eventHub . emitAsync ( EventType . COMPONENT_UPDATE , {
178+ componentId : component . __componentId ,
179+ componentInstanceId,
180+ name,
181+ flushId,
182+ paths : Array . from ( tree . pathDependencies ) as any ,
183+ } )
184+ } )
185+ tree . track ( forceRerender )
184186 }
185187
186188 return {
0 commit comments