From d1b58d19fc792f919ddbc0460af49660bdfec5b1 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Fri, 4 Jul 2025 14:10:05 +0200 Subject: [PATCH] Refactor LoadMore to use ref instead of getElementById --- .../app/src/components/LoadMore/index.jsx | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/app/src/components/LoadMore/index.jsx b/packages/app/src/components/LoadMore/index.jsx index 2bf1de51..b1557f51 100755 --- a/packages/app/src/components/LoadMore/index.jsx +++ b/packages/app/src/components/LoadMore/index.jsx @@ -3,7 +3,7 @@ import classnames from "classnames" import "./index.less" -export default React.forwardRef((props, ref) => { +const LoadMore = React.forwardRef((props, ref) => { const { className, children, @@ -12,10 +12,16 @@ export default React.forwardRef((props, ref) => { contentProps = {}, } = props + const nodeRef = React.useRef(null) + let observer = null const insideViewportCb = (entries) => { - const { fetching, onBottom } = props + const { fetching, onBottom, hasMore } = props + + if (!hasMore) { + return false + } entries.forEach((element) => { if (element.intersectionRatio > 0 && !fetching) { @@ -26,10 +32,8 @@ export default React.forwardRef((props, ref) => { React.useEffect(() => { try { - const node = document.getElementById("bottom") - observer = new IntersectionObserver(insideViewportCb) - observer.observe(node) + observer.observe(nodeRef.current) } catch (err) { console.log("err in finding node", err) } @@ -44,9 +48,10 @@ export default React.forwardRef((props, ref) => {
{children} -
+ {/*
*/}
{
) }) + +LoadMore.displayName = "LoadMore" + +export default LoadMore