[Genie95] #5. React Props란?

2025. 4. 3. 13:56·Projects

React에서 props란?

리액트 컴포넌트끼리 데이터를 주고받을 때는 어떻게 해야 할까요?
Windows 95 테마 포트폴리오 웹사이트를 만들면서 직접 겪은 props의 개념과 실전 적용 방법을 정리해보았습니다.


🧩 상황: 컴포넌트 간 데이터 전달, 어떻게 해야 할까요?

프로젝트 초반, 데스크탑 UI를 구현하기 위해 아이콘을 클릭하면 창이 열리도록 만들고자 했습니다.

이때 아이콘 컴포넌트는 클릭 이벤트를 감지하고,
창 컴포넌트는 열리고 닫히는 상태를 제어해야 하는 구조였는데요.

 

두 컴포넌트가 서로 다른 파일로 분리되어 있어 데이터를 어떻게 주고받아야 할지 고민이 생겼습니다.

 

✅ 해결 방법: props로 함수 전달하기

React에서는 컴포넌트 간의 데이터 전달을 props를 통해 처리합니다.


부모 컴포넌트가 자식 컴포넌트에게 props를 통해 데이터나 함수를 넘겨주면,
자식 컴포넌트에서는 그것을 사용할 수 있습니다.

👇 아래는 예시 코드입니다:

// 부모 컴포넌트 (예: Desktop)
import Icon from './Icon';
import Window from './Window';

function Desktop() {
  const [isOpen, setIsOpen] = useState(false);

  const handleOpen = () => setIsOpen(true);

  return (
    <>
      <Icon onDoubleClick={handleOpen} />
      {isOpen && <Window />}
    </>
  );
}
// 자식 컴포넌트 (예: Icon)
function Icon({ onDoubleClick }) {
  return (
    <div onDoubleClick={onDoubleClick}>
      <img src="folder.png" alt="폴더 아이콘" />
      <span>내 문서</span>
    </div>
  );
}

 

📌 요약하자면,
Desktop 컴포넌트가 Icon에 onDoubleClick 함수를 전달하고,
Icon 컴포넌트에서는 전달받은 함수를 실행하여 부모의 상태를 변경하는 구조입니다.

 

📚 배경 지식: props란?

props는 "properties"의 줄임말로, 리액트에서 컴포넌트 간에 데이터를 주고받는 유일한 방법입니다.

  • props는 읽기 전용입니다.
  • 부모 → 자식 방향으로만 전달됩니다.
  • 함수도 props로 전달이 가능합니다.

📌 단방향 데이터 흐름(one-way data flow)은 리액트의 핵심 설계 원칙 중 하나로, 예측 가능한 UI를 만드는 데 중요한 역할을 합니다.


🧠 정리하며

이번 프로젝트를 통해 props의 개념을 단순한 문법이 아닌, 실제 구조 안에서 왜 필요한지 몸소 이해할 수 있었습니다.

컴포넌트를 설계할 때는 "어느 컴포넌트가 상태를 가져야 하는가?", "어떤 컴포넌트가 행동을 일으키고, 어떤 컴포넌트가 반응해야 하는가?"를 고민하면서 props를 활용하는 것이 중요하다고 느꼈습니다.

저작자표시 비영리 동일조건 (새창열림)

'Projects' 카테고리의 다른 글

[Genie95] #6. 도메인을 연결하였지만 Nginx 기본 화면만 나오는 경우는?  (0) 2025.04.07
[Genie95] #3. React useState와 useEffect  (0) 2025.03.11
[Genie95] #2. React 기반 프론트엔드 개발의 장점은?  (1) 2025.03.07
[Genie95] #1. AWS EC2 기반 포트폴리오 웹사이트 구축 & 자동 배포 과정  (0) 2025.03.03
[Genie95] #0. Windows95 테마 포트폴리오 웹사이트 만들기  (1) 2025.02.28
'Projects' 카테고리의 다른 글
  • [Genie95] #6. 도메인을 연결하였지만 Nginx 기본 화면만 나오는 경우는?
  • [Genie95] #3. React useState와 useEffect
  • [Genie95] #2. React 기반 프론트엔드 개발의 장점은?
  • [Genie95] #1. AWS EC2 기반 포트폴리오 웹사이트 구축 & 자동 배포 과정
Genie Choi 지니 초이
Genie Choi 지니 초이
  • Genie Choi 지니 초이
    Genie World
    Genie Choi 지니 초이
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • Genie (3)
      • Projects (6)
      • Up-to-date learning (0)
      • App Development (10)
        • React Native (1)
        • Swift (9)
      • Marketing Tool (1)
        • Mobile Measurement Platform (1)
        • CRM Marketing (0)
      • Linux (5)
      • AWS (2)
        • EC2 (1)
        • Route 53 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Genie Choi 지니 초이
[Genie95] #5. React Props란?
상단으로

티스토리툴바