inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 리액트 A-Z[19버전 반영]

데이터가 2번 호출되는 문제

393

당황한 공작새

작성한 질문수 1

0

동일하게 코드를 작성해보았는데 fetchPosts 함수가 2번 실행되어 포스트 리스트에 데이터가 2번 중복으로 들어갑니다.

강의에서도 19분 12초를 보니 2번 호출이 되는 것으로 보입니다.

  useEffect(() => {
    dispatch(fetchPosts());
  }, [dispatch]);

이 부분이 2번 실행되는 문제 같아서 버튼 클릭할 때 fetchPosts 함수를 dispatch하는 방식으로 바꾸었더니 데이터가 1번만 요청됩니다.

  const handleClick = () => {
    dispatch(fetchPosts());
  };

useEffect를 사용해서 페이지 접속 시 자동으로 데이터가 1번만 호출되게 하고 싶은데 어떻게 수정해야 할까요?

  useEffect(() => {
    dispatch(fetchPosts());
  }, []);

이렇게 수정해도 2번 실행됩니다..ㅠㅠ

 

react redux tdd typescript next.js 소프트웨어-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. useEffect를 사용해서 페이지 접속 시 자동으로 데이터가 1번만 호출되게 하고 싶은데요, useEffect의 두 번째 파라미터가 [dispatch]로 되어 있는 경우에는 dispatch 함수가 변경될 때마다 useEffect가 실행됩니다. 그래서 처음 페이지에 진입할 때 useEffect가 실행되고 dispatch 함수가 변경되어도 다시 실행됩니다.

만약 페이지 접속 시에만 한 번 실행되길 원한다면, useEffect의 두 번째 파라미터를 빈 배열로 설정하세요. 이렇게하면 처음 한 번만 실행되고, dispatch 함수가 변경되는 것과 상관없이 다시 실행되지 않습니다.

따라서 코드는 아래와 같이 수정하시면 됩니다.

useEffect(() => {
  dispatch(fetchPosts());
}, []);

위와 같이 수정하시면 페이지에 처음 접속할 때 fetchPosts 함수가 1번만 실행되게 됩니다. 이 방법으로 동작하지 않는다면, 다른 이슈가 있는 것일 수 있으니 다시 확인해보세요. 어려운 개발 관련 질문이 있으시면 지식공유자에게 문의해보시는 것도 좋아요. 수고하세요!

강의 소스 코드 압축 풀기 오류

0

70

1

런타임 에러 ㅠㅠ

0

84

1

강의대로 따라갔는데 에러보다 api키로 들어간 넷플릭스? 그런게 렌더링 되지 않습니다 ㅠ

0

100

1

안녕하세요 개발과 상관없는 질문입니다만

0

111

1

리액트 라우터 관련

0

101

1

react-beatiful-dnd에서 문제가 발생합니다.

0

103

1

react19에서는 react-beautiful-dnd가 설치되지 않습니다.

0

806

1

useEffect로 사용을 해도 되나요?

0

198

1

넷플릭스 오리지널 제외하고 슬라이드가 동작을 안합니다.

0

195

1

react 19의 useActionState가 더이상 isPending은 지원하지 않는 듯합니다

0

279

2

리액트 dockderfile 작성 시 COPY 질문

0

145

1

next.js에서부터는 react query 필요없는지

0

320

1

기능

0

193

1

오류가 안보여요

0

193

1

CSS

0

217

1

local storage

0

208

1

list컴포넌트 생성하기

0

223

1

검색어 입력 후 초기화하는 방법 궁금합니다!

0

331

1

Banner.css에 대해서

0

444

1

플러그인이 추천을 안해줍니다

0

320

1

마이너스버튼 테스트

0

279

2

리액트 서버 실행 오류

0

1156

2

오류메세지는 확인했는데 어떻게 고쳐야 할지 모르겠습니다 ㅠ

0

298

1

creactStore질문이요

1

284

2