{ // 검색어가 없거나 검색을 처음 시작할 때는 검색 X if (!keyword.trim()) { return; } const observer = new IntersectionObserver(onIntersection, { threshold: 1 }); if (loadMoreRef.current) { observer.observe(loadMoreRef.current); } return () => { if (loadMoreRef.current) { observer.unobserve(loadMoreRef.current); } }; }, [onIntersection, keyword]);"> { // 검색어가 없거나 검색을 처음 시작할 때는 검색 X if (!keyword.trim()) { return; } const observer = new IntersectionObserver(onIntersection, { threshold: 1 }); if (loadMoreRef.current) { observer.observe(loadMoreRef.current); } return () => { if (loadMoreRef.current) { observer.unobserve(loadMoreRef.current); } }; }, [onIntersection, keyword]);"> { // 검색어가 없거나 검색을 처음 시작할 때는 검색 X if (!keyword.trim()) { return; } const observer = new IntersectionObserver(onIntersection, { threshold: 1 }); if (loadMoreRef.current) { observer.observe(loadMoreRef.current); } return () => { if (loadMoreRef.current) { observer.unobserve(loadMoreRef.current); } }; }, [onIntersection, keyword]);">
const onIntersection = useCallback(

    (entries) => {
      console.log("onIntersection function");
      const firstEntity = entries[0];

      if (firstEntity.isIntersecting && hasMore) {
        fetchSearchPlaces(searchType, keyword, page);
      }
    },
    [hasMore, searchType, keyword, page]
  );
  
  useEffect(() => {

    // 검색어가 없거나 검색을 처음 시작할 때는 검색 X
    if (!keyword.trim()) {
        return;
      }

    const observer = new IntersectionObserver(onIntersection, { threshold: 1 });

    if (loadMoreRef.current) {
      observer.observe(loadMoreRef.current);
    }

    return () => {
      if (loadMoreRef.current) {
        observer.unobserve(loadMoreRef.current);
      }
    };
  }, [onIntersection, keyword]);
const observer = new IntersectionObserver(callback, options);
useEffect(() => {

    // 검색어가 없거나 검색을 처음 시작할 때는 검색 X
    if (!keyword.trim()) {
        return;
      }

    const observer = new IntersectionObserver(onIntersection, { threshold: 1 });

    if (loadMoreRef.current) {
      observer.observe(loadMoreRef.current);
    }

    return () => {
      if (loadMoreRef.current) {
        observer.unobserve(loadMoreRef.current);
      //observer.disconnect();  
      }
    };
  }, [onIntersection, keyword]);
// Intersection Observer의 callback 함수
const onIntersection = useCallback(

    (entries) => {
      console.log("onIntersection function");
      const firstEntity = entries[0];

      if (firstEntity.isIntersecting && hasMore) {
        fetchSearchPlaces(searchType, keyword, page);
      }
    },
    [hasMore, searchType, keyword, page]
  );

React 무한 스크롤 구현하기: Intersection Observer 활용