inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요. useEffect 관련 질문 드립니다!

677

정문채

작성한 질문수 17

0

안녕하세요 useEffect hooks 관련해서 질문드립니다.
useEffect를 하지 않았을경우 당연히 렌더는 1번되지만 useEffect로 디스패치를 하면 렌더링이 3번됩니다.

이게 정상인지 아닌지 잘 모르겠어서 질문드립니다..

react express redux nodejs Next.js

답변 18

0

정문채

아아 네..알겠습니다 회사 끝나고 공부할때 다시 시도해보겠습니다 ㅠㅠ

0

제로초(조현영)

const loginStatus = useSelector((state) => state.auth.user.loginStatus)

이렇게 끝까지 꺼내시면 됩니다. 객체인 경우에 그 객체 내부에 하나만 바뀌어도 다 업데이트 되거든요.

0

정문채

아 그럼 들어온데이터가 리턴에서 어떻게 해줘야 스테이트업데이트가 안될까여?

0

제로초(조현영)

네 그런데 {...state}를 하면 user 자체는 새로운 객체로 생성됩니다. 그 내부는 유지되는 거고요. user가 새로 생성되서 그런 것 같습니다.

0

정문채

스프레드 연산자를 이용하면 같은 스테이트들은 그냥 그대로 두는게 아니었나요..?

0

정문채

그래서 loginStaus없앴는데도 같아용...혹시 라우트나 리덕스 리덕스미들웨어 연결과정에서 이런경우가 있나요?

0

제로초(조현영)

액션에서 계속 users를 바꾸는 걸로 보이는데(loginStatus) 그에 따라 리렌더링이 일어나는 것 아닌가요?

0

정문채

Header.js

reducers/auth.js

sagas/auth.js


이렇게 되어있습니다

0

제로초(조현영)

useSelector를 어떻게 하고 계신가요

0

정문채

지금 여기저기 콘솔로 찍어봤는데 실패했을때 사가에서 USER_LOAD_FAILURE 액션을 하게되는데 try catch문에서 USER_LOAD_FAILURE액션을 뺐더니 렌더링이 제대로 되는데... 분명 리듀서에서는 USER_LOAD_FAILURE 액션에서 바뀌는건 아무것도 없는데 왜 새로 렌더링이될까요...?

0

정문채

이게 맞나요..?

0

제로초(조현영)

dispatch를 하면 user관련된 리덕스 스테이트들이 바뀔 것이고 useSelector로 불러온 값들도 바뀌므로 리렌더링 되는 것 아닌가요?

0

정문채

네..현재 Main.js 라우트에서는 Header.js 컴포넌트에서 유저 로드하는 액션 말고는 없는데..왜그런지 모르겠어요..
근데 디스패치만 빼면 그냥 그대로 렌더링 한번만 되는데... 뭐가문제죠...디스패치해서 셋스테이트 한번만 할뿐일텐데..

0

제로초(조현영)

컴포넌트가 리렌더링되는 이유는 보통 state가 바뀌었거나 props가 바뀌었거나 부모 컴포넌트가 리렌더링되었을 때입니다.

이중에 해당하는 게 없나요?

0

정문채

아 죄송해요 저 액션은 유저를 로드해오는 액션인데 첫 웹사이트 접근시에는 로그인이 되어있지않아 에러를 뱉고있어요
근데 모달 함수를 주석처리해도 렌더는 세번되네요...왜그러죠..?...

0

제로초(조현영)

로그인이 성공했고 모달이 열려있는 경우로 한정하시면 될 것 같습니다.

0

정문채

아 그럼 저게 모달닫는 함수인데 로그인 성공했을때만 실행하도록 하면 될까요?

0

제로초(조현영)

useEffect 안에 들어있는 setIsOpen때문에 그렇습니다. 필요할 때만 setIsOpen을 호출하세요.

넥스트 버젼 질문

0

78

2

로그인시 401 Unauthorized 오류가 뜹니다

0

89

1

무한 스크롤 중 스크롤 튐 현상

0

175

1

특정 페이지 접근을 막고 싶을 때

0

103

2

createGlobalStyle의 위치와 영향범위

0

96

2

인라인 스타일 리렌더링 관련

0

91

2

vsc 에서 npm init 설치시 오류

0

146

2

nextjs 15버전 사용 가능할까요?

0

158

1

화면 새로고침 문의

0

121

1

RTK에서 draft, state 차이가 있나요?

0

153

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

349

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

373

1

sudo certbot --nginx 에러

0

1275

2

Minified React error 콘솔에러 (hydrate)

0

470

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

247

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

327

1

npm run build 에러

0

518

1

front 서버 npm run build 중에 발생한 에러들

0

382

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

338

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

288

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

239

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

201

1