From 24dd17bb74eb6e745fb2b2b3f92250d7c41f0cd7 Mon Sep 17 00:00:00 2001 From: Cody Bennett <23324155+CodyJasonBennett@users.noreply.github.com> Date: Thu, 6 Oct 2022 23:33:31 -0500 Subject: [PATCH 1/2] fix(useIntersect): call live callback --- src/core/useIntersect.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/useIntersect.tsx b/src/core/useIntersect.tsx index a82560537..2df8534d2 100644 --- a/src/core/useIntersect.tsx +++ b/src/core/useIntersect.tsx @@ -5,6 +5,8 @@ export function useIntersect(onChange: (visible: boole const ref = React.useRef(null!) const check = React.useRef(false) const temp = React.useRef(false) + const callback = React.useRef(onChange) + React.useEffect(() => void (callback.current = onChange), [onChange]) React.useEffect(() => { const obj = ref.current if (obj) { @@ -18,7 +20,7 @@ export function useIntersect(onChange: (visible: boole obj.onBeforeRender = () => (check.current = true) // Compare the check value against the temp value, if it differs set state const unsub2 = addAfterEffect(() => { - if (check.current !== temp.current) onChange((temp.current = check.current)) + if (check.current !== temp.current) callback.current?.((temp.current = check.current)) return true }) return () => { From af0554095bbb9b0919c57736f7d55dc833b5db1d Mon Sep 17 00:00:00 2001 From: Cody Bennett <23324155+CodyJasonBennett@users.noreply.github.com> Date: Thu, 6 Oct 2022 23:36:45 -0500 Subject: [PATCH 2/2] chore: prefer ULE --- src/core/useIntersect.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/useIntersect.tsx b/src/core/useIntersect.tsx index 2df8534d2..afa666d49 100644 --- a/src/core/useIntersect.tsx +++ b/src/core/useIntersect.tsx @@ -6,7 +6,7 @@ export function useIntersect(onChange: (visible: boole const check = React.useRef(false) const temp = React.useRef(false) const callback = React.useRef(onChange) - React.useEffect(() => void (callback.current = onChange), [onChange]) + React.useLayoutEffect(() => void (callback.current = onChange), [onChange]) React.useEffect(() => { const obj = ref.current if (obj) {