[React] 함수형 컴포넌트의 props 사용

2026. 2. 7. 18:08·Frontend/React
니콜라스 쌤의 노마드코더 'ReactJS로 영화 웹 서비스 만들기' 보면서 공부한 내용입니다.
부족한 내용이나 잘못된 내용은 댓글남겨주시면 감사하겠습니다!

출처 : https://nomadcoders.co/react-for-beginners

 

이전글에 이어, 이번에는 Props에 대해 알아보겠습니다.

 

Props란 부모 컴포넌트로부터 자식 컴포넌트에 데이터를 보낼 수 있게 해주는 방법입니다.

1. Props를 사용하지 않는 버전 

- 우선 Props의 장점을 극대화하여 느끼기 위해, Props를 사용하지 않는 버전으로 각각의 버튼마다 컴포넌트를 만들고 스타일을 일일이 지정을 해줘야 합니다.

function SaveBtn() {
    return (
        <button
            style={{
                backgroundColor: "tomato",
                color: "white",
                padding: "10px 20px",
                border: 0,
                borderRadius: "10px"
            }}
        >
            Save Changes
        </button>
    );
}

// 함수형 컴포넌트
function ConfirmBtn() {
    return (
        <button
            style={{
                backgroundColor: "tomato",
                color: "white",
                padding: "10px 20px",
                border: 0,
                borderRadius: "10px"
            }}
        >
            Confirm
        </button>
    );
}

function App() {
    return (
        <div>
            <SaveBtn />
            <ConfirmBtn />
        </div>
    );
}

const root = document.getElementById("root");
ReactDOM.render(<App />, root);

 

2. props 사용

- 컴포넌트명을 Btn으로 만들고, function을 사용하여 함수형 컴포넌트를 만들었습니다.

그리고 나서, 두개의 Btn 컴포넌트를 렌더링하여 각각 props를 지정해주었습니다.

주석처럼 함수에 매개변수를 넣는 것과 동일하게 사용되며, 심지어 같은 컴포넌트지만 변수를 다르게 사용해도 되고, 값의 형태 또한 달라도 가능했습니다. (진짜 매우 신기함)

function Btn(props) {
    console.log(props);
}

function App() {
    return (
        <div>
            <Btn banana="Save Changes" x={false} />
            <Btn banana="Continue" y={7} />
            {/* Btn({banna:"Save Changes"}) 과 같음 */}
        </div>
    );
}

 

Btn의 props는 컴포넌트에 넣은 모든 것을 갖는 오브젝트가 됩니다.

 

3. props 활용 

그러면, 원하는대로 이렇게 버튼의 텍스트를 변경할 수 있습니다.

function Btn(props) {
    return (
        <button
            {props.banana}
        </button>
    );
}

function App() {
    return (
        <div>
            <Btn banana="Save Changes" />
            <Btn banana="Continue" />
        </div>
    );
}

 

4. 더 간단하게 props 접근

그리고 더 간단한 방법으로 props를 굳이 안 써도 바로 접근 가능합니다.

function Btn(banana) {
    return (
        <button
            style={{
                backgroundColor: "tomato",
                color: "white",
                padding: "10px 20px",
                border: 0,
                borderRadius: "10px"
            }}
        >
            {banana}
        </button>
    );
}

 

5. 여러 개의 props 사용

아래 코드처럼 두 개 이상의 props도 사용이 가능합니다.

맨 처음에 작성한 코드에 비해 매우 간단해진 것을 알 수 있었습니다.

<!DOCTYPE html>
<html>

<body>
    <div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
    function Btn({ text, big }) {
        return (
            <button
                style={{
                    backgroundColor: "tomato",
                    color: "white",
                    padding: "10px 20px",
                    border: 0,
                    borderRadius: "10px",
                    fontSize: big ? "32px" : "16px"
                }}
            >
                {text}
            </button>
        );
    }

    function App() {
        return (
            <div>
                <Btn text="Save Changes" big={true} />
                <Btn text="Continue" big={false} />
                {/* Btn({banna:"Save Changes"}) 과 같음 */}
            </div>
        );
    }

    const root = document.getElementById("root");
    ReactDOM.render(<App />, root);

</script>

</html>

 

다음 글에서는 리렌더링에 대해 조금 더 알아보고 그것을 방지하는 방법도 같이 공부해보겠습니다.

[React] React.memo() : 리렌더링 방지 방법

 

읽어주셔서 감사합니다.

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

[React] props types 자료형, 필수 값, 기본 값 지정  (0) 2026.02.08
[React] React.memo() : 리렌더링 방지 방법  (0) 2026.02.08
[React] 단위변환기 완성 (minute&hours, km&miles)  (0) 2026.02.07
[React] Divide : 작은 컴포넌트로 분할 - 단위변환기 3  (0) 2026.02.07
[React] 분 <-> 시, 리셋기능 - 단위변환기2  (0) 2026.02.03
'Frontend/React' 카테고리의 다른 글
  • [React] props types 자료형, 필수 값, 기본 값 지정
  • [React] React.memo() : 리렌더링 방지 방법
  • [React] 단위변환기 완성 (minute&hours, km&miles)
  • [React] Divide : 작은 컴포넌트로 분할 - 단위변환기 3
min_sol
min_sol
  • min_sol
    비글개발연구소🐾
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (278)
      • Programming (128)
        • Algorithm (52)
        • JAVA (40)
        • GIS (5)
        • PyQt (10)
        • C# (11)
        • Mobile (6)
        • AI (4)
      • Backend (36)
        • Spring (14)
        • JSP (11)
        • Network (5)
      • Frontend (29)
        • React (11)
        • Vue (13)
        • Next.js (4)
      • Database (10)
        • PostgreSQL (1)
        • Oracle (8)
        • Elasticsearch (1)
      • DevOps (8)
        • Linux (7)
        • Mac (1)
      • Tools (31)
        • IntelliJ (1)
        • GitHub (10)
        • RPA (20)
      • Security (9)
      • etc (21)
        • ERROR (5)
        • 세미나 | 교육 (10)
        • 자격증 (1)
        • 일상 (2)
        • 2021 (2)
  • 인기 글

  • 태그

    명품자바에센셜
    PyQt
    계산기
    vue.js
    알고리즘
    백준
    생능출판
    VUE
    코딩테스트
    spring
    RPA
    이클립스
    자동화
    자바
    Java
    자료구조
    jsp
    PyQt5
    스윙
    연습문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[React] 함수형 컴포넌트의 props 사용
상단으로

티스토리툴바