⚙️Frontend/REACT

[React] Props 전달 시 {} 사용하는 이유 / map() 함수

soonybutter 2025. 5. 19. 17:53
728x90

 

 

TodoList 앱 개발 중  간략하게 정리하면 좋을 내용이 생겨 정리하기:) 

 

목차

1. Props에 {} 전달하는이유

2. map() 함수

 

 

 

 


 

 

 

1. Props에 {} 전달 하는 이유

 

일단 Props 란 리액트에서 부모 컴포넌트로부터 전달받는 데이터이다.

 

부모 컴포넌트로부터 props 를 전달받을 때 두 가지 방식이 있다.

 

 

 

1. Props 전체를 받음 

const List = (props) => {
  console.log(props.todos);  // 접근하려면 props.todos
}

 

구조분해할당을 하지 않고 전달 props를 전달 받으면, 객체 형태(object)로 전달된다.

 

{ todos : [...] } 형태로 전달 되는 것이다.

객체(object)는 key- value 쌍으로 구성되어 있다.

 

이 props를 꺼내 사용하려면 key값으로 코드에서 다시 접근해줘야 한다.

 

 

 

2. 구조 분해 할당

const List = ({ todos }) => {
  console.log(todos);  // 바로 todos로 접근 가능!
}

 

 

{} 형태로 전달하는 것이 바로 구조 분해할당 방식으로 받는 것,

 

중괄호{} 로 감싸주면 객체의 key 값에 해당하는 값만 보내준다.

따라서 꺼내서 바로 쓸 수 있다!

 

객체나 배열에서 필요한 값만 쉽게 꺼내 쓸 수 있다는 점 뿐만아니라, 

반복해서 props.xxxx 와 같이 매번 안써도 되기 때문에 코드 자체도 간결해지고 가독성을 높인다.

 

 

 

const person = {
  name: "Alice",
  age: 25,
  job: "developer",
  city: "Seoul"
};

// 필요한 값만 구조 분해
const { name, job } = person;

 

또 위와 같이 원하는 값만 뽑아서 쓸 수 있다.

 

const { name, hobby = "없음" } = person;

console.log(hobby);  // person에 hobby가 없으면 "없음" 출력

 

그리고 없는 key에 대해 기본값을 설정해줄 수도 있음!

 


 

 

 

2. map() 함수

 

input 창에 입력된 todo list는 배열로 저장이 되고 있다.

이 배열을 화면에 렌더링해 보여주기 위해 사용한 것이 바로 map() 함수 이다.

 

 

 

map함수란?

 배열의 각 요소를 하나씩 꺼내서, 새로운 배열을 만들어주는 함수

 

 

 

 

예시로 아래와 같은 할 일 목록 배열이 있다고 할 때,

const todos = [
  { id: 1, content: "공부하기" },
  { id: 2, content: "운동하기" },
  { id: 3, content: "청소하기" }
];

 

이 배열에서 각각의 항목을 화면에 보여주고 싶을 때 map()을 사용한다.

 

todos.map((todo) => {
  return <div>{todo.content}</div>;
});

 

이렇게 하면 아래와 같은 jsx 배열을 만들어, 화면에 렌더링 된다.

 

<div>공부하기</div>
<div>운동하기</div>
<div>청소하기</div>

 

 

 

 

JSX에서 가능한 이유

 

: JSX에서는 배열 형태로 여러 개의 컴포넌트를 리턴할 수 있기 때문에,
map()을 활용해 반복적으로 리스트를 출력하는 것이 가능하다.

 

 

따라서  React에서 리스트를 출력할 때  map()이 자주 등장할 예정 🙃

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*Ref

https://ko.legacy.reactjs.org/docs/components-and-props.html

 

Components와 Props – React

A JavaScript library for building user interfaces

ko.legacy.reactjs.org

 

728x90