질문입니다.
254
35 asked

강의를 하시면서 가끔 너무 빠르게 잡아줄 때는 이렇게 문제를 해결한다는 이야기를 하시는데 자주 등장하는 것 같네요.
위 코드(위의 이미지, 아래에는 풀 코드를 첨부함) 에서는 props.user.cartDetail이 잡히지도 않았는데 렌더링이 되었다는 것으로 이해를 했는데 그러면 안 잡힌 상태에서 렌더링이 되면 페이지에서는 그 부분이 안보여야 되는 것 아닌가요??
그려지지 않은 부분에서 리액트에서 탐지를 해서 렌더링 못한 컴포넌트에 대해서 리액트가 리렌더링을 해주는 것인가요?? 자세히 알고싶은데 어렵네요 ㅠ
이것에 대해서 자세히 공부해보고 싶은데 어떤 주제로 검색해야 이런 문제를 공부해볼 수 있을까요?
감사합니다.
Answer 2
1
1.props.user.cardDetail && props.user.cardDetail.product 이 부분이 부모 컴포넌트에서 props을 내려주는 부분이잔아요
이 부분에서 결국 저 마지막에 보이는 product 를 가져와야 되잔아요
그런데 아직 prop.user.cardDatil이 없는데 product를 가져오려고 하면
어떤상황이 되냐면
props.user.undefined.product가 되버려서 undefined 에러가 납니다.
그러기에 무조건 props.user.cardDetail이 있을때에만 product를 가져와서 내려보내라고 해주는 것입니다.
2. 이제 CardPage 컴포넌트 자녀 컴포넌트로 이동해볼게요.
우선 props.user.userData && props.user.userData.cart
이 부분에서 마지막 cart라는 정보가 있어야만 아래 부분을 Trigger 시켜줄수가 있어요 안그러면 위에와 같이 undefined
에러가 나게 됩니다.
그런데 여기서 문제는 useEffect 가 작동하는 시점과 cart 정보가 데이터를 가져오는 시점에서 문제가 발생합니다.
만약 cart 정보가 useEffect를 작동하기전에 이미 정보가 있다면 굳이 아래보이는
}, [props.user.userData])
이부분에 props.user.userData 를 안넣어줘도 되고 그냥 [] 이렇게 비워두어도 됩니다.
하지만 속도가 useEffect 작동하는 시간이 더 빠르기에 cart정보가 없으니
if(props.user.userData && props.user.userData.cart){
이 조건에 의하여 아무런 trigger도 발생하지 않게 됩니다.
설명이 잘 이해가 되실지 모르겠네요 ㅠㅠ 더 잘 설명해드려야 하는데 ...
0
자세한 설명 감사합니다.
정리하자면,
일반적으로 하나의 JS파일인 컴포넌트가 동작할 때는
useeffect가 먼저 켜진 후, 렌더링이 되는데
이 때 useeffect 내의 로직안에서 준비되지 못한 친구들은 일단은 그냥 넘어가게 된다.
그리고 그 값들이 준비가 된다면 ( [prop.user.userData] 가 제 값을 찾는다면 ) 다시 한번 리 렌더링이 되서
원하는 값을 찾게된다.
제가 이해한 것이 맞는지요? 감사합니다.
강의 내용은 훌륭하나, 환경 설정 오류 때문에 진도를 나갈 수 없습니다. 20년 버전 강의.
0
60
1
강의자료는 어디서 볼 수있나요??
0
66
1
이 쇼핑몰 만들기 강의는 관리자페이지 만드는건 없나요
0
113
2
웹에서 실시간 코드반영이 안돼요
0
120
1
app.use질문
0
64
1
강사님께 어떻게 직접질문할수있어요??
0
75
1
const함수같은거 기초강의는 어디있나요
0
81
2
리덕스 참조챕터가 어딨어요? 미리듣고오라는데요
0
81
2
강의가완전 오래되서 다 틀리네 app.jsx도 tailwind css 다틀림 무책임함
0
68
1
개발자도구에 redux란이 없어요
0
87
1
npx tailwindcss init -p 에서 계속 에러나요
0
92
1
쇼핑몰기능중 찜하기 기능은 어떻게 구현하나요
0
138
2
강의하다 줌으로 설명가능한지좀 정확히 알려주세요. 이 선생님 정책이 어떻게 되는데요. 직접 연락할 메일이라도 알려주세요
0
42
1
도표 강의 자료 열람 불가능
0
109
1
tailwindcss를 vite에서 이용하는 방식이 바뀐것 같습니다.
0
1130
2
eslint 설정 후 오류가 납니다.
0
221
1
오버로드 오류
0
149
1
VSCode에서 save를 할 때, landingpage의 useEffect가 실행되는 문제에 대하여
0
169
1
dispatch(logoutUser()) 실행시 dispatch(authuser())도 함께 실행되는 문제
0
228
2
logout할 때, server로 요청을 보내서 authUser middleware를 통과하도록 하는 이유?
0
195
1
webkit-text-size-adjust 오류
0
312
1
does not provide an export named 'userReducer'
0
213
2
빌드 배포
0
138
1
삭제 예정 강의는 언제 삭제 되나요? 저것때문에 수강완료를 못하면 회사에서 비용을 청구한다고 합니다~
0
217
2

