Skip to content

Commit df9a99f

Browse files
fix(overmind-react): correctly track updates
1 parent 519dafb commit df9a99f

File tree

1 file changed

+22
-20
lines changed
  • packages/node_modules/overmind-react/src

1 file changed

+22
-20
lines changed

packages/node_modules/overmind-react/src/index.ts

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)