context에서 useEffect 선언 부분 질문 있어요.
294
1 câu hỏi đã được viết
AuthProvider에서 useEffect를 추가해서 loadUser가 호출되도록 해주었는데 모든 페이지 접근시 2번씩 호출되는 원인이 무엇일까요?
// app.tsx
<AuthProvider>
<Component {...pageProps} />
</AuthProvider>
// AuthProvider
useEffect(() => {
async function loadUser() {
try {
const res = await axios.get("/auth/me");
dispatch("LOGIN", res.data);
} catch (error) {
console.log(error);
} finally {
dispatch("STOP_LOADING");
}
}
console.log("loadUser");
loadUser();
}, []);
그리고 커뮤니티 생성 페이지에서는 getServerSideProps를 선언해두었기 때문에 여기서도 /auth/me api 를 호출해주어서 결국 커뮤니티 생성 페이지에서만 총 3번이 호출되고 있어요.
제가 잘못 구현한 것일까요?
정리하자면,
1. 현재 코드에서는 loadUser() 메서드가 1회만 호출되어야 할 것 같은데, 2번 호출되는 이유는 무엇인지?
2. 커뮤니티 생성 페이지에서는 /auth/me api를 3번 호출하고 있는데, 횟수를 줄일 수 있는지? (이건 url 직접 입력해서 들어가지 않으면 1회만 호출할 것 같긴 하네요.)
서버 로그입니다.(각각 커뮤니티 생성 페이지, 로그인 페이지)
Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다.
dKim님의 질문에 답변드리겠습니다.
loadUser()메서드가 두 번 호출되는 현상은, React Strict Mode가 활성화되어 있을 때 발생할 수 있습니다. 개발 모드에서만useEffect가 두 번 실행되어 두 번 로그가 찍히는 것이니, 프로덕션 빌드에서는 한 번만 호출될 것입니다. Strict Mode는 주로 개발 단계에서 부수효과를 더 명확하게 파악하기 위해 사용되므로,<React.StrictMode>태그를 제거하면 이중 호출을 방지할 수 있습니다.getServerSideProps에서 API를 호출하는 경우, 클라이언트 측에서 추가useEffect로 동일한 API를 호출할 필요가 없을 수 있습니다. 서버에서 사용자 정보를 미리 로드한 후 페이지의props로 전달하여 API 호출 횟수를 줄일 수 있습니다. 만약getServerSideProps에서 인증 정보가 필요하다면 각각의 페이지에 필수적으로 인증 정보를 서버 측에서 미리 처리하여 전달함으로써 클라이언트 측에서의 중복 호출을 줄일 수 있습니다.
조금 더 상세한 내용을 원하신다면, 제공된 서버 로그만으로는 제한적이므로 서버 설정, 클라이언트의 상태 관리 로직, SSR 로직 등 전반적인 코드 구조를 검토할 필요가 있습니다.
도움이 되셨길 바랍니다.
toJson을 추가하면 [sub].tsx에서 sub를 받아오지 못합니다.
0
117
2
쿠키 저장이 되지 않습니다.
0
222
1
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE', (2)
0
580
1
AxiosError {message: 'Request failed with status code 401/500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE',
0
647
1
overload 에러
0
169
1
docker compose up 오류
0
206
1
부록) remark 강의 중 parmas 오류
0
139
1
3000번은 잘 들어가지는데 80번은 안됩니다.
1
292
0
커뮤니티를 올리고 난 후 404 page
0
209
1
tailwind css 문제인지, className 에 적용한 css가 적용되지 않아요.
0
1039
2
tsx 수정 시 마다 빌드 후 서버 시작 해야하나요?
0
651
2
useState 쳤을 때 자동완성 되는 단축키 무엇인가요? extention 인가요?
0
804
2
리액트 서버 npm run dev 와 npm run build 후 npm start 의 차이
0
4589
2
data 폴더가 생성되지 않아요.
0
524
1
docker-compose up 오류
0
814
1
회원 가입 페이지 기능 생성(3) 중 에러
0
379
2
Entity에 toJSON 코드 입력 후 404 에러
0
252
1
src 폴더구조
0
509
2
서버 실행 시 에러 관련하여 답변받고 1차 조치했는데 여전하여서 질문 남깁니다
0
298
1
엔티티 모두 작성 후 서버 실행 시 에러가 발생합니다
0
311
1
회원가입 누르면 404에러가 뜹니다 ;-;
1
421
1
nextjs버젼에 대해서 질문드립니다.
0
372
1
<npm run dev>시 -61 에러가 나타납니다!
0
356
1
docker-compose.yml 은 왜 루트에 하나염
0
328
1

