행복을 담는 블로그

[React] 반복되는 컴포넌트 처리하기 / map( ), filter( ) 본문

FrontEnd/React

[React] 반복되는 컴포넌트 처리하기 / map( ), filter( )

hyun0zin 2024. 1. 23. 00:42

 function App() {
    const testArr = ["감자", "고구마", "오이", "가지", "옥수수"];

    return (
      // 보다 더 깔끔한 html을 작성할 수 있다.
      <div className="app-style">
        <div className="component-style">감자</div>
        <div className="component-style">고구마</div>
        <div className="component-style">오이</div>
        <div className="component-style">가지</div>
        <div className="component-style">옥수수</div>
      </div>
    );
    }

앞서 만든 코드를 살펴보면, <div className="component-style">감자</div> 부분이 text 만 빼고 반복하고 있는 것을 알 수 있다.

 

1. map() 이용하여 반복되는 컴포넌트 처리하기

이를 map()을 이용하여 보다 깔끔하게 만들 수 있다.

map() 은 배열 내 원래의 데이터를 가공하여 새로운 형태의 데이터로 출력하는 방법이다.
배열의 길이가 그대로 동일하게 출력된다.

testArr를 map을 이용하여 새로운 배열을 만들어 내는데, 그 배열은 <div className="component-style">{item}</div> 이 형태로 return 된다.

return (
    <div className="app-style">
      {testArr.map(function (item) {
        return <div className="component-style">{item}</div>;
      })}
);

▶️ map() 을 돌면서 배열의 길이만큼, 배열 내 데이터가 새로운 데이터로 다시 나온다.

 

화살표 함수로 나타내면 다음과 같다.

<div className="app-style">
      {testArr.map((item) => {
        return <div className="component-style">{item}</div>;
})}

 

2. filter() 이용하여 특정 컴포넌트만 나타내기

map을 이용하여 반복되는 컴포넌트를 정리 할 수 있었다면, filter를 이용해서는 원하는 특정 데이터만 뽑아서 사용할 수 있다.

우선 filter로 특정 데이터만 빼고 나타나도록 해보자.

<div className="app-style">
  {testArr.filter(function(item){
      return item !== "오이";
  })
}

▶️ "오이"를 제외한 데이터들만 배열 형태로 나오게 된다. // ["감자", "고구마", "가지", "옥수수"]

 

해당 배열을 다시 map 함수를 이용하여 카드 형태로 그려보면 다음과 같다.
=> testArr.filter().map()을 이용하였다.

<div className="app-style">
  {testArr.filter(function(item){
      return item !== "오이";
  })
  .map(function(item){
    return <div className="component-style">{item}</div>;
  })}

오이가 빠지고 특정 카드들만 나타나는 것을 알 수 있다.

'FrontEnd > React' 카테고리의 다른 글

[React] Redux 설정하기  (1) 2024.01.30
[React] Vite-React 사용하기  (0) 2024.01.30
[React] React에서 Styling 하기/ HTML, CSS, JSX  (0) 2024.01.22
[React] 불변성이란?  (0) 2024.01.22
[React] Props  (0) 2024.01.22