컴퓨터/React
[React] 배열 각 요소 컴포넌트로 전환
도도새 도
2023. 6. 8. 07:26
배열을 컴포넌트로 전환하는 쉬운 방법을 간략히 정리해놓고자 한다.
우선 App 컴포넌트의 형태는 아래와 같다.
import './App.css'
import {Hello} from './Hello'
export default function App() {
const names = ['Bill', 'Chichi', 'Mina'];
return (
<>
<Hello name={names}></Hello>
</>
)
}
여기서 하고자 하는 것은 자식 컴포넌트에서 프롭으로 전달받은 배열의 각 요소를 컴포넌트(예를 들어 div태그에 innerHtml을 해당 배열의 값으로 가지는 컴포넌트)로 전환하는 것이다.
1. for each문
export function Hello({name}){
const arr = [];
for(let n of name){
arr.push(
<h1>
{n}
</h1>
)
}
return(
<>
{arr}
</>
)
}
빈 배열을 선언하고 name을 구조분해 할당으로 받아서, 해당 배열의 각 요소에 태그를 씌운 후 arr에 push 하였다.
2. map 함수
export function Hello({name}){
const arr = name.map(ele=><h1>{ele}</h1>)
console.log(arr);
return(
<>
{arr}
</>
)
}
Js의 map함수는 각요소의 값을 순환하며 return된 값을 새로운 값으로 가지는 배열을 반환한다.
쉽게 이야기해 아래의 설명처럼 작동한다.
- 콜백함수의 파라미터로 현재 검사중인 배열의 값이 담긴다.
- 콜백함수의 리턴값이 새로운 배열에 push된다.
- 다음 요소를 검사한다.(1로 돌아간다.)
위의 코드에서는 arr의 각 요소가 ele에 들어간다. 그리고 리턴 값으로<h1>{ele}</h1>를 가진다.
즉 각 요소에 h1을 씌운 새로운 배열을 생성한 것이다.