개발할때 보통api에서 데이터를 가져온 후Object형식의useState에서setState로 데이터를 넣어준 후 보통 아래처럼 데이터를 사용합니다.
let fireball = user.skill.fireball;
or
(<div>{user.skill.fireball}</div>)
근데 만약 여기서 user.skill이 null이라면 "Uncaught TypeError: Cannot read property 'fireball' of null" 이런 문구의 에러가 발생합니다.
여기서 만약 optional chaining을 모른다면
let fireball = user.skill && user.skill.fireball;
or
(<div>{user.skill && user.skill.fireball}</div>)
user.skill.fireball 앞에 user.skill && 을 붙여 유효성 검사를 하고 user.skill이 있다면 user.skill.fireball값을 참조하게 할 것입니다. 사실 user.skill ? user.skill.fireball : '' 이 코드 보다는 깔끔하긴 합니다. 하지만 우리의 optional chaining을 알고 있다면 훨씬 깔끔한 코드를 작성할 수 있습니다.
반응형
optional chaining은 ?. 이렇게 쓰여지고 각 참조가 null인지 undefined인지 미리 확인하여 줍니다.
let fireball = user.skill?.fireball;
or
(<div>{user.skill?.fireball}</div>)
단지 . 앞에 ? 하나 붙이면 Uncaught TypeError 에러를 피할 수 있다니 엄청 훌륭하지 않습니까?!