Props란? Props를 사용하는 방법

2022. 9. 12. 21:03·Front-End/React

Props란? Props의 사용방법

Props란?

  • Props는 Properties의 줄임말이다.
  • 상속하는 부모 컴포넌트로부터 자녀 컴포넌트에 데이터등을 전달하는 방법
  • Props는 읽기 전용(immutable)으로 자녀 컴포넌트 입장에서는 변하지 않는다. (변경하고 싶으면 부모 컴포넌트에서 state를 변경 시켜야한다.)

Props의 사용

//App.js
const App = () => {
  return <Text text='Hello world!'/>

//Text.js
const Text = ({text}) => {
  return <div>{text}</div>
}

위의 코드는 부모 컴포넌트(App)에서 자식 컴포넌트(Text)에 Props를 사용해서 “Hello world!” 라는 문자열 데이터를 전달했다.

여러개의 Props 와 defaultProps

  • 부모 컴포넌트에서 여러개의 props를 넘겨줄 수 있다.
  • props 내부의 값을 조회 할 때, 비구조화 할당 문법을 사용하면 간결하게 작성가능하다.
  • 컴포넌트에 props를 지정하지 않았을 때, 기본값을 설정하고 싶으면 defaultProps 값을 설정한다.

App.js

import React from 'react';
import Hello from './Hello ';
import './App.css';

function App() {
    return (
        <>
        <Text text="Hello world!" color="red"/>
        <Text color="blue"/>
        </>
    );
}

export default App;

Hello.js

import React from 'react';

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

Hello.defaultProps = {
    text: '기본값 텍스트 입니다.'
}

export default Hello;

컴포넌트 태그 사이에 넣은 값 조회 - props.children

  • 컴포넌트 태그 사이에 넣은 값을 조회하기 위해서는 children 값을 사용하면 된다.

App.js

import React from 'react';
import Hello from './Hello ';
import './App.css';
import Wrapper from "./wrapper";

function App() {
    return (
        <Wrapper>
            <Hello text="Hello world!" color="red"/>
            <Hello color="blue"/>
        </Wrapper>
    );
}

export default App;
  • Hello컴포넌트를 Wrapper 컴포넌트 내부에 넣었을때, 브라우저에서는 Hello컴포넌트가 렌더링 되지 않는다.

Wrapper.js

import React from 'react';

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

export default Wrapper;
  • 내부의 내용이 보여지게 하기 위해선 props.children을 렌더링 해주어야 한다.

Props의 조건부 렌더링

  • 특정 조건에 따라서 다른 결과물을 렌더링 하는 것

App.js

import React from 'react';
import Hello from './Hello';
import './App.css';
import Wrapper from "./wrapper";

function App() {
    return (
        <Wrapper>
            {/*<Hello name="Hello world!" color="red" isSpecial={true}/>*/}
            <Hello name="react" color="red" isSpecial />
            <Hello color="blue"/>
        </Wrapper>
    );
}

export default App;
  • isSpecial 값 설정을 생략하면 ={true} 값이 자동 설정된다
  • Hello컴포넌트에서는 isSpecial값이 true 이면 해당 하는 값을 렌더링 하도록 한다.

Hello.js

import React from 'react';

function Hello({ color, name, isSpecial }) {
    return <div style={{ color }}>
        { isSpecial && <b>isSpecial이 true 입니당 </b>}
        {/*isSpecial이 false일때 false이고, 
                true일때 '<b>isSpecial이 true 입니당 </b>' 가 된다.*/}
        안녕하세요 {name}
    </div>
}

Hello.defaultProps = {
    name: '기본값 텍스트 입니다'
}

export default Hello;
반응형
저작자표시 (새창열림)
'Front-End/React' 카테고리의 다른 글
  • [React] useRef란? useRef의 사용
  • [React] input태그 상태 관리
  • [React] Redux를 리액트 프로젝트에 사용해보기
  • [React] Redux 이해하기
LightSource
LightSource
어제보단 발전한 오늘의 나를 위한 블로그
    반응형
  • LightSource
    LightSourceCoder
    LightSource
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Git (4)
      • Language (6)
        • Java (6)
      • Back-End (63)
        • Spring Boot (4)
        • MyBatis (1)
        • Oracle (1)
        • PL SQL (3)
        • JPA (26)
        • Spring Data JPA (5)
        • Spring MVC (8)
        • Spring (12)
        • Spring Security (2)
        • Redis (1)
      • Front-End (38)
        • 아이오닉 (2)
        • JSP (7)
        • JavaScript (4)
        • React (16)
        • TypeScript (3)
        • Angular (6)
      • AWS (1)
      • CI & CD (1)
      • 개발지식 (13)
        • 네트워크 (9)
        • CS 지식 (4)
      • 데이터모델링 (2)
      • Tool (1)
      • 프로젝트 (5)
      • 독후감 (2)
      • 잡생각 (0)
      • 면접 준비 (1)
      • 알고리즘 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    배열요소삭제
    react
    배요소열추가
    리액트
    배열요소수정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
LightSource
Props란? Props를 사용하는 방법
상단으로

티스토리툴바