WARNING in [eslint]
src\App.js
Line 22:48: Array.prototype.map() expects a return value from arrow function array-callback-return
React에서 map 함수를 사용했을 때 결과가 제대로 나오지 않으면서 "Array.prototype.map() expects a return value from arrow function"이라는 에러가 발생할 때가 있습니다. React는 JSX문법을 사용하는데, HTML 태그를 리턴해주는 경우 JavaScript에서 사용했을 때 처럼 중괄호를 이용해서 map 함수를 작성하면 위의 에러가 발생합니다.
// JavaScript
const A = [1, 2, 3, 4, 5];
A.map((data) => {
console.log(`${data}번 째 console.log`);
console.log(data);
});
// JSX
const Breeds = (props) => {
return (
<dl>
{props.list.map(({ breed, description }) => { // 중괄호({ })가 아닌 괄호(( ))를 써야 함
<Fragment key={breed}>
<dt>{breed}</dt>
<dd>{description}</dd>
</Fragment>;
})}
</dl>
);
};
JavaScript에서 map 함수를 이용해서 여러 줄을 반환할 때 중괄호를 써야 하지만, JSX에서는 중괄호를 괄호로 바꿔주어야 에러가 발생하지 않고 함수가 제대로 실행됩니다.
import { Fragment } from "react";
const Breeds = (props) => {
return (
<dl>
{props.list.map(({ breed, description }) => ( // 코드 수정한 부분
<Fragment key={breed}>
<dt>{breed}</dt>
<dd>{description}</dd>
</Fragment>;
))} // 코드 수정한 부분
</dl>
);
};
const lists = [
{ breed: "치와와", description: "작은 품종의 개." },
{ breed: "코기", description: "귀여운 품종의 개." },
{ breed: "컴벌랜드 시프도그", description: "멸종된 품종의 개." },
];
function App() {
return <Breeds list={lists} />;
}
export default App;
이렇게 코드를 수정해주면 lists의 객체들이 제대로 화면에 표시되는 것을 볼 수 있습니다. Breeds 함수의 return 부분 처럼 여러 줄의 JSX 표현식을 반환할 때는 괄호를 사용해야 하기 때문에, map 함수를 이용해서 태그를 반환해줄 때에도 중괄호가 아닌 괄호를 사용해야 합니다.
'코딩 공부 > React' 카테고리의 다른 글
[React] QGIS, D3.js를 이용해서 서울시 지도 그리기 - 4. React에서 json 파일 불러오기 (0) | 2024.12.02 |
---|---|
[React] QGIS, D3.js를 이용해서 서울시 지도 그리기 - 3. GeoJSON 파일 만들고 단순화하기 (0) | 2024.12.01 |
[React] QGIS, D3.js를 이용해서 서울시 지도 그리기 - 2. QGIS 설치 및 간단한 기능 소개 (0) | 2024.11.20 |
[React] QGIS, D3.js를 이용해서 서울시 지도 그리기 - 1. 지도 데이터 받기 (0) | 2024.11.19 |
[React] Radix Tooltip을 이용한 Table Tooltip 만들기 (0) | 2024.06.26 |