React props

  1. 프로퍼티(properties, props)

상위 컴포넌트에서 하위 컴포넌트로 값을 전달할 때 사용(단방향 데이터 흐름).

프로퍼티 값은 수정 불가능, 즉 읽기 전용 데이터.

1) 사용법

상위 컴포넌트에서 Props를 지정하고 하위 컴포넌트에서 받은 Props 값을 렌더링.

  • 문자열 전달: 큰 따옴표(” “) 사용
  • 숫자형, boolean 등의 값(문자열 외의 값) 전달: 중괄호( { } ) 사용

(1) 단일값 전달

  • App.js
import React from 'react';
import Hello from "../src/Hello";

function App() {
    return (
            <Hello name="React"></Hello>//사용할 컴포넌트 props의 name 값을 "React"로
        );
}

export default App;
  • Header.js
import React from 'react';

function Hello(props) {
    return <div>Hello, {props.name}</div>;// name 값을 조회하기 위해 props.name 이용.
}

export default Hello;

(2) 여러값 전달

  • App.js
import React from 'react';
import Hello from '../src/Hello';

function App() {
    return (
            <Hello name="React" color="blue"/>
        );
}

export default App;
  • Hello.js
import React from 'react';

function Hello(props){
    return(
            <div style={{ color: props.color }}>Hello, {props.name}</div>
        );
}

export default Hello;

이런 경우 객체값을 부를 때마다 매번 props에서 불러와야 함.

비구조화 할당 방식으로 코드를 바꾸면:

import React from 'react';

function Hello({name, color}){
    return(
            <div style={{ color: color }}>Hello, {name}</div>//동일하게 <div style={{ color }}Hello, {name}</div>
        );
}

export default Hello;

(3) 기본값 설정: defaultProps

  • Hello.js
import React from 'react';

function Hello( {color, name} ) {
    return <div style={{ color }}>Hello, {name}</div>;
}

Hello.defaultProps = {
    name: 'noname'//defaultProps로 기본값 설정.
}

export default Hello;

(4) 컴포넌트 태그 내부의 값 조회: props.children

예를 들어, 스타일 정의된 파일 Wrapper.js를 App.js의 컴퍼넌트로 추가한다면,

  • Wrapper.js
import React from "react";

function Wrapper() {
    const style = {
        border: '2px solid black',
        padding: 20
    };
    return <div style={style}><div>
}

export default Wrapper;
  • App.js
import React from "react";
import Hello from "./Hello";
import Wrapper from "./Wrapper";

function App() {
    return (
        <Wrapper>
            <Hello name="React" color="blue"></Header>
        </Wraaper>
    );
}

export default App;

하지만 이렇게 작성된 Wrapper 컴포넌트를 App.js에 추가하면 Wrapper 태그 내부에서 작성한 값들을 출력 X

이럴 때, {children}을 사용하여 태그 내부를 보이도록 만들어주도록 한다.

따라서 Wrapper.js를 다음과 같이 수정한다:

  • Wrapper.js
import React from 'react';

function Wrapper({ children }) {
    const style = {
        border: '2px solid black',
        padding: 20
    };

    return (
        <div style={style}>
            {children}
        </div>
    )
}

export default Wrapper;

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다