[오류해결] TypeError: Cannot read property 'map' of undefined

j.log·2021년 7월 26일
5

오류해결

목록 보기
2/3



1. 문제점


  • React 는 렌더링이 화면에 커밋 된 후에야 모든 효과를 실행한다.
  • 즉, React는 return에서 XXX.map(...)을 반복실행할 때, 첫 턴에 데이터가 아직 안들어와도 렌더링이 실행되며 당연히 그 데이터는 undefined로 정의되어 오류가 나는 것이다.




2. 문제해결


&&을 활용하자!

  • { true && expression } 은 항상 expression
  • { false && expression }은 항상 false

조건이 참이면 && 바로 뒤의 요소가 출력에 나타난다.
거짓이면 React는 무시하고 건너뛴다.

  return(
    <div>
      <h1>타이틀<h1>
      <div className="news">
        // && 활용!
        {xxx && xxx.map(item => {
          return <p><a href={item.link}> {item.title} </a></p>;
        })}
      </div>
    </div>
  );
profile
jlog

4개의 댓글

comment-user-thumbnail
2021년 9월 28일

저도 이렇게 해결했으뮤

답글 달기
comment-user-thumbnail
2021년 10월 5일

저는 Mobx를 사용하면서 이런 오류가 났는데
observer를 class 앞부분에 안쓰고 inject를 사용해서 넣었더니 잘 작동하네요.

export default inject(({ useStores }) => {
return {
DataStore: stores.DataStore,
};
})(observer(OptimizerContainer));
inject를 해주는 것이 mobx상에서 useEffect같은 효과를 주는 것 같은데.. 제 오류의 경우 명확한 이유는 더 살펴봐야 할 것 같습니다.

답글 달기
comment-user-thumbnail
2021년 10월 27일

map을 쓰지도않았는데 왜 저 오류가 뜨는걸까요?..

답글 달기
comment-user-thumbnail
2022년 5월 15일

오오 React 처음해봐서 헤매고 있었는데 덕분에 해결했습니다! 감사합니다~~

답글 달기