react Marvel 졸업작품 리팩토링(?)

웰디(Well-D)·2023년 9월 10일
0

사실 rel= "noopener" 이 더 적합한게 아닌가싶은데..referrer만 수정가능하다고 터미널에서 가이드 해주고 있어서 우선수정함.

웹 브라우저를 위한 속성도 있습니다. noreferrer를 사용하면 링크를 클릭했을 때 HTTP 리퍼러 헤더(referer header)를 넘기지 않을 수 있습니다. 출처

  • 무한 스크롤 구현하려다가 실패함. 페이지 개념을 넣어줘야하는 부분을 정확히 이해하지 못했는데..구현할 시간이 없다는 핑계를 대보았다. 사실 제공받은 api에서 애초에 받아오는 데이터가 40개로 한정이 되어있어서, 이럴때 무한스크롤을 구현해보려면 40개를 반복적으로 보여주도록 하면되는지, 구현할수 있는지 궁금함.

https://hye-on-astrogrammer.tistory.com/21
https://juni-official.tistory.com/226

무한스크롤 다양한 글을 참고해서 스크롤 자체는 구현했는데, 생각지 못한 문제가 생겼다.

 const [loading, setLoading] = useState(true);
  const [characters, setCharacters] = useState([]);
  const target = useRef(null);
  const [scrollLoading, setScrollLoading] = useState(false);
  const page = useRef(1);
  const getCharacters = async () => {
    setScrollLoading(true);
    const json = await (await fetch(URL)).json();
    setCharacters(json.data.results);
    setLoading(false);
    setCharacters((prev) => [...prev, ...json.data.results]);
    setScrollLoading(false);
  };
useEffect(() => {
    const observer = new IntersectionObserver((entries) => {
      entries.forEach((entry) => {
        if (!entry.isIntersecting) return; 
        // entry가 interscting 중이 아니라면 함수를 실행하지 않음
        if (scrollLoading) return; 
        // 현재 page가 불러오는 중임을 나타내는 flag를 통해 불러오는 중이면 함수를 실행하지 않음
        page.current += 1;
        getCharacters();
      });
    });
    observer.observe(target.current);
  }, [scrollLoading]);

바로 같은 데이터를 반복적으로 li에 집어넣기때문에 list 의 key 값이 동일해져 버린다는 것 ..

일단 보류

profile
Wellness 잘사는 것에 진심인 웰디입니다. 여러분의 몸과 마음, 통장의 건강을 수호하고싶어요. 느리더라도, 꾸준히

0개의 댓글