티스토리 뷰

FrontEnd/React

[React] 03. props

JINSUKUKU 2022. 5. 6. 15:43

벨로퍼트와 함께하는 모던 리액트

  • 벨로퍼트와 함께하는 모던 리액트: https://react.vlpt.us/
  • 진도 - 1.5. props 를 통해 컴포넌트에게 값 전달하기

 

💬  props 를 통해 컴포넌트에게 값 전달하기

props 의 기본 사용법

// Hello.js

import React from 'react';

function Hello(props){
    return <div> 안녕하세요 {props.name} </div>
}

export default Hello;
// App.js

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

function App(){
    return (
        <Hello name="react" />
    )
}
  • props는 properties의 줄임말로, 어떠한 값을 컴포넌트에 전달해야 할 때 props를 사용한다

 

여러개의 props, 비구조화 할당

// App.js

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

function App(){
    return (
        <Hello name="react" color="blue" />
    )
}
// Hello.js(1) props 사용

import React from 'react';

function Hello(props){
    return(
        {/*
            style = { color: { props.color } }
            이렇게 되어야할것같은데 이건 에러 발생한다 주의하자
        */ }
        <div style = {{ color: props.color }} >
        안녕하세요 {props.name}
        </div>
    )
}

export default Hello;
// Hello.js(2) 비구조화 할당

import React from 'react';

function Hello({ color, name }){
    return(
        <div style = {{ color }} >
        안녕하세요 {name}
        </div>
    )
}

export default Hello;
// Hello.js(3) 비구조화 할당

import React from 'react';

function Hello({ backgroundColor, name }){
    return(
        <div style = {{ backgroundColor }} >
        안녕하세요 {name}
        </div>
    )
}

export default Hello;
  • Hello.js(1): props를 사용하면 props에 담아온 name과 color 값을 꺼내어 사용하고 있다
  • Hello.js(2): props 대신 비구조화 할당을 사용하면 코드를 더 간결하게 작성할 수 있다
  • 매개변수의 이름이 곧 key가 되고, 담겨진 값이 value가 된다
  • 비구조화 할당(구조분해 할당): 배열이나 객체의 속성을 분해해서, 그 값을 변수에 담을 수 있게하는 표현식

 

defaultProps

// Hello.jsimport React from 'react';

function Hello({ color, name }){
    return(
        <div style = {{ color }} >
        안녕하세요 {name}
        </div>
    )
}

Hello.defaultProps = {
    color: 'gray',
    name: 'noNamed'
}

export default Hello;

  • 컴포넌트에 props의 기봄값을 설정하고 싶다면 컴포넌트에 defaultProps 값을 지정한다
  • App.js에서 props를 전달하지 않으면 defaultProps의 값이 사용된다

 

props.children

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

function App() {
  const name = "React";
  const style = {
    backgroundColor: 'black',
    color: 'aqua',
    fontSize: 24, 
    padding: '1rem',
    textAlign: 'center'
  }


  return (
    <div className="App">
      <Wrapper>
        <Hello color="aqua" name="jjangu" />
        <h2 style={style}>{name}</h2>
      </Wrapper>
    </div>
  );
}

export default App;
// Wrapper.js

import React from 'react';

function Wrapper({children}){
    const style = {
        border: '10px solid black',
        padding: 16
    }

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

}

export default Wrapper;
  • 컴포넌트 태그 사이에 있는 컨텐츠는 브라우저에서 보여지지 않는다
  • 내부의 내용을 보여지게 하기위해서는 props.children을 렌더링해주어야 한다

 

 

 

 

 

 

 

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

[React] 02. JSX  (0) 2022.05.04
[React] 01.리액트 시작하기  (0) 2022.05.04
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday