React Study

React - Props

2020. 11. 9. 23:55
๋ชฉ์ฐจ
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“Œ Introduction
  3. ๐Ÿ“Œ What is Props
  4. ๐Ÿ“Œ Implementation Props
  5. ๐Ÿ“Œ Children Props
  6.  
  7. ๐Ÿ“Œ PropTypes
  8. ๐Ÿ“Œ DefaultProps
  9.  
  10. ๐Ÿ“Œ Conclusion
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • Introduction
  • What is Props
  • Implementation Props
  • Children Props
  • PropTypes
  • DefaultProps
  • Conclsution

๐Ÿ“Œ Introduction

์•ˆ๋…•ํ•˜์„ธ์š”. ์˜ค๋Š˜์€ ์ด์ œ react props์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ What is Props

props๋Š” properties์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ์ด props๋Š” ์ƒ์œ„์˜ ๋ถ€๋ชจ์š”์†Œ๊ฐ€ ํ•˜์œ„์ธ ์ž์‹์š”์†Œ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ• ๋•Œ ์“ฐ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ Implementation Props

๊ฐ„๋‹จํ•˜๊ฒŒ App.js ์—์„œ Hello.js์— props๋กœ ์ „๋‹ฌ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

// App.js

import React from "react";
import Hello from "./Hello";
import Wrapper from "./Wrapper";

function App() {
  return (
    <div>
      <Hello name="react" color="red" /> โญ๏ธ์ด๋ ‡๊ฒŒ ์ž์‹์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      <Hello color="blue" />
    </div>
  );
}

export default App;
// Hello.js

import React from "react";

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

// ๋งŒ์•ฝ ํ•ด๋‹น props๊ฐ€ ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์ธ props ์„ธํŒ…์„ ์—ฌ๊ธฐ์„œ ํ•ด์ค„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Hello.defaultProps = {
  name: "์ด๋ฆ„ ์—†์Œ",
};

export default Hello;

๐Ÿ“Œ Children Props

๋˜ํ•œ ์ž์‹ props๋ผ๊ณ  ํ•˜๋Š”๊ฒƒ์ด ์žˆ๋Š”๋ฐ ์ด๊ฑด vue์—์„œ์˜ slot๊ฐ€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ์—” Wrapper.js๋ฅผ ํ•œ๋ฒˆ ์„ ์–ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

// App.js

import React from "react";
import Hello from "./Hello";
import Wrapper from "./Wrapper";

function App() {
  return (
    <Wrapper>
      <Hello name="react" color="red" /> // ์ด๊ฑธ children์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      <Hello color="blue" /> // ์ด๊ฒƒ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
    </Wrapper>
  );
}

export default App;
import React from "react";

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

  return <div style={style}>{children}</div>; // โญ๏ธ children์„ ๋žœ๋”๋ง ํ•ด์ฃผ๋Š” ๋ชจ์Šต์„ ๋ณผ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.
}

export default Wrapper;

 

๐Ÿ“Œ PropTypes

 

๋จผ์ € prop-types๋ฅผ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

yarn add prop-types

์ด๋ ‡๊ฒŒ ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

import React, { useState } from 'react';
import PropTypes from 'prop-types';

function CountDisplay({ count }) {

  return (
    <h1>{count}</h1>
  );
}

CountDisplay.propTypes = {
  count: PropTypes.number
}

PropTypes์•ˆ์—๋Š” number, string, boolean, object, array... ์™€ ๊ฐ™์€ ํƒ€์ž…์ด ์žˆ๊ณ  required๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด

 

 

import React, { useState } from 'react';
import PropTypes from 'prop-types';

function CountDisplay({ count }) {

  return (
    <h1>{count}</h1>
  );
}

CountDisplay.propTypes = {
  count: PropTypes.element.isRequired
}

 

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ DefaultProps

 

์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ ์ž ํ• ๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

import React, { useState } from 'react';

function CountDisplay({ count }) {

  return (
    <h1>{count}</h1>
  );
}

CountDisplay.defaultProps = {
  count: 0,
}

 

๐Ÿ“Œ Conclusion

์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ react์˜ props์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. class์ผ๋•Œ์˜ react๋งŒ์„ ๋ด์„œ ๊ทธ๋Ÿฐ์ง€ ์‹ ๊ธฐํ•œ ๋ฌธ๋ฒ•๋“ค์ด ๋งŽ์ด ์ƒ๊ธฐ๊ณ  ๋” ๊ฐ„๊ฒฐํ•ด์ง„๊ฒŒ ์ข‹์€๊ฑฐ ๊ฐ™๋„ค์š”. ๊ทธ๋Ÿผ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋งŒ๋‚˜์š”~~

 

 

 

๋ฐ˜์‘ํ˜•

'React Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React - ๋ฐฐ์—ด ๋žœ๋”๋ง  (0) 2020.12.03
React - useRef ํŠน์ •๋” ์ง€์ •ํ•˜๊ธฐ  (0) 2020.12.02
React - input ๊ด€๋ฆฌ  (0) 2020.12.01
React - useState  (0) 2020.11.12
React - Conditional Rendering  (0) 2020.11.10
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“Œ Introduction
  3. ๐Ÿ“Œ What is Props
  4. ๐Ÿ“Œ Implementation Props
  5. ๐Ÿ“Œ Children Props
  6.  
  7. ๐Ÿ“Œ PropTypes
  8. ๐Ÿ“Œ DefaultProps
  9.  
  10. ๐Ÿ“Œ Conclusion
'React Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • React - useRef ํŠน์ •๋” ์ง€์ •ํ•˜๊ธฐ
  • React - input ๊ด€๋ฆฌ
  • React - useState
  • React - Conditional Rendering
eddie0329
eddie0329
Front-end Developer
๋ฐ˜์‘ํ˜•
eddie0329
Eddie Sunny's Blog
eddie0329
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • ์žก๋‹ด (0)
    • Swift (19)
    • Rust (2)
    • ํšŒ์‚ฌ์ด์•ผ๊ธฐ (2)
    • ReactNative Study (2)
    • Vitest (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • Home

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • vue bdd
  • client only
  • Vue
  • TypeScript
  • BDD
  • D3
  • CSS
  • Design Pattern
  • react
  • react useRef
  • Nextjs
  • swift5
  • vue storybook
  • apollo
  • vue tdd
  • storybook6
  • javascript pattern
  • Vue test
  • Cypress
  • slot ํŒจํ„ด
  • TDD
  • swift
  • react-component-slot
  • React Native
  • vue3
  • Kotlin
  • Javascript
  • svelte
  • jest
  • vue cypress

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
eddie0329
React - Props
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.