Skip to content
Prev Previous commit
Next Next commit
fix: cleanup observers in layout cleanup
  • Loading branch information
joshuaellis committed Apr 6, 2022
commit d491a4eeb37f6a4f2df0dce1a3ae663dd5b8f1dc
13 changes: 8 additions & 5 deletions packages/animated/src/withAnimated.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,19 @@ export const withAnimated = (Component: any, host: HostConfig) => {

const observerRef = useRef<PropsObserver>()
useLayoutEffect(() => {
const lastObserver = observerRef.current
observerRef.current = observer

// Observe the latest dependencies.
each(deps, dep => addFluidObserver(dep, observer))

// Stop observing previous dependencies.
if (lastObserver) {
each(lastObserver.deps, dep => removeFluidObserver(dep, lastObserver))
raf.cancel(lastObserver.update)
return () => {
// Stop observing previous dependencies.
if (observerRef.current) {
each(observerRef.current.deps, dep =>
removeFluidObserver(dep, observerRef.current!)
)
raf.cancel(observerRef.current.update)
}
}
})

Expand Down