Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- CSS
- 배포
- web
- url
- REACT
- firestoredatabase
- http
- bootstrap
- Database
- Protocol
- HTML
- db
- data
- this
- API
- jQuery
- Cloud
- Fetch
- W
- til
- nosql
- TMDB
- Github Pages
- Boostrap
- useEffect
- supabase
- IntersectionObserver
- github
- JavaScript
- SQL
Archives
- Today
- Total
072DATA
`React` map 메소드 내에서 jsx 반환 오류.. 본문
오류 내용
선택한 포켓몬이 selectedPokemon에 추가는 되는데 렌더링이 안됨
알고보니 map 메서드 안에서 {} 중괄호를 사용하면, 코드 블록은 실행되지만
아무것도 반환하지 않기 때문에 실제로 렌더링할 JSX가 없음
map 메서드는 배열의 각 요소에 대해 함수를 실행하고
그 함수가 반환한 값을 새로운 배열에 담아 반환함
코드 확인 ㄱㄱ
올바른 코드
selectedPokemon.map((pokemon, index) => {
if (pokemon) {
return (
<PokemonCard
pokemon={pokemon}
index={index}
isSelected={true}
onAddPokemon={addPokemon}
/>
);
} else {
return (
<DashBoardItem>
<DashBoardPokeball src="/img/pokeball.png" alt="포켓볼" />
</DashBoardItem>
);
}
});
이렇게 하면 return 값인 jsx가 정상적으로 반환되지만
잘못된 코드
selectedPokemon.map((pokemon, index) => {
if (pokemon) {
// JSX를 반환하지 않고, 중괄호 내에서만 실행됨
<PokemonCard
pokemon={pokemon}
index={index}
isSelected={true}
onAddPokemon={addPokemon}
/>;
} else {
// JSX를 반환하지 않고, 중괄호 내에서만 실행됨
<DashBoardItem>
<DashBoardPokeball src="/img/pokeball.png" alt="포켓볼" />
</DashBoardItem>;
}
});
해당 코드에선 중괄호 {} 안에 JSX가 있지만 반환되지 않음 왜냐하면 중괄호 {} 안에 있는 코드 블록은
반환 값 없이 실행만 되기 때문에 결과적으로 map 함수는 undefined를 반환삽 그래서 카드가 렌더링 되지 않았던 거임
요약
- map 메서드에서 jsx를 반환할 떄 return을 명시적 반환하기
- 중괄호 {} 안에 JSX를 넣으면 JSX가 실행되지만 반환되지 않으므로 렌더링 되지 않음
'Anything > 오류 해결(error)' 카테고리의 다른 글
`오류 해결` 데이터 값 불러올 때 속성 값 = null (1) | 2024.09.02 |
---|---|
`오류 해결` Cannot read properties of null (호이스팅, useEffect) (0) | 2024.08.30 |
이벤트 버블링? `stopPropagation`메소드로 해결 (0) | 2024.08.26 |
`React` 타입 오류 해결 (0) | 2024.08.25 |
이중 반복문의 무서움(중첩 for, forEach) - 에러 해결 (0) | 2024.08.05 |