React/know

조건부 랜더링 시 Hook 사용 조심하기

타코따코 2024. 11. 22. 14:24

 

if (movie === undefined) return; 를 useEffect 호출보다 먼저 사용하게 된다면,

movie에 값에 따라 useEffect가 호출되고 안되고 버전이 두개로 나뉘므로, 리액트에서 인식 불가 에러

 

  if (movie === undefined) return;   // useEffect 호출 전 해당 함수 종료
  
  useEffect(() => {
    setIsLoading(true);
    const fetchMovieDetail = async () => {
      const result = await movieRepository.fetchMovieDetail(movie.imdbID);
      setIsLoading(false);
    };
    fetchMovieDetail();
  }, [movie]);

 

 

해당 분기처리는 위젯 내에서 처리하거나, useEffect를 호출 후 종료하는 형식으로 변경해야한다.

  useEffect(() => {
    if (movie === undefined) return;
    setIsLoading(true);
    const fetchMovieDetail = async () => {
      const result = await movieRepository.fetchMovieDetail(movie.imdbID);
      setIsLoading(false);
    };
    fetchMovieDetail();
  }, [movie]);

'React > know' 카테고리의 다른 글

onClick을 사용하는 3가지 방법  (0) 2024.11.26
캡쳐링 버블링  (0) 2024.11.25
비구조할당으로 argument 처리하기  (0) 2024.11.21
Render Props 패턴  (0) 2024.11.20
성능 최적화 : React Dev Tool, React.lazy  (2) 2024.11.19