강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

d\/b님의 프로필 이미지
d\/b

작성한 질문수

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

옵셔녈체이닝

작성

·

123

0

안녕하세요.

const {me} = useSelector(state => state.user)
const profiles = me?.profiles

위처럼 옵셔널 체이닝을 했다고 가정했을 때

profiles[0]?.Images[0]?.src

profiles 를 이용할 때도 위 그림처럼 그 뒤에 계속 옵셔널 체이닝을 해줘야 하나요?

한번 오류가 떴던 적이 있었던 것 같은데 이게 두번째 그림처럼 안해줘서 그런건지 다른 이유인지 몰라서

그냥 무조건 계속 붙이고 있는데 잘 모르겠습니다 ..

할 필요는 없는 건가요?

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

확실히 있는걸 장담할 수 있으면 뗄 수 있습니다. 다만 긴가민가한다면 붙여야겠죠. 그리고 Images[0] 이것도 Images가 undefined면 에러가 납니다. 그래서 Images?.[0] 이렇게 해야합니다.

d\/b님의 프로필 이미지
d\/b
질문자

추가 질문이 생겼는데, 저렇게 옵셔널 체이닝이 된 상태면 undefined 라도 데이터가 다 불러와지면

다시 리랜더링이 되면서 채워지기때문에 오류가 뜨지 않는 걸로 이해하면 될까요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

undefined이든 아니든 렌더링에는 문제가 없습니다. 다만 옵셔널체이닝을 안 했을 때 런타임 에러가 나는게 문제였던 것이죠.

d\/b님의 프로필 이미지
d\/b
질문자

그 문법에러가 undefined 된 값을 불러오려고 하니까 생기는 그거 맞나요? 아래 그림같은 거요 !

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 맞습니다

d\/b님의 프로필 이미지
d\/b
질문자

감사합니다!

d\/b님의 프로필 이미지
d\/b

작성한 질문수

질문하기