TIL/React

[TIL] default props

Dong _ hwa 2023. 5. 19. 00:25

๋ฐฐ์šด ์  ์žˆ๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ ๊ฐ€๋ฌผ๊ฐ€๋ฌผ..

defaultProps : props๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ „๋‹ฌ ํ•ด์ฃผ๋Š” props

๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๋ญ๋ผ๋Š”์ง€๋Š” ์•Œ๊ฒ ์œผ๋‚˜ ์™œ ์“ฐ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž

Hello.js

import React from "react";

function Hello(props) {
  return (
    <div style={{ color: props.color }}>์•ˆ๋…•ํ•˜์„ธ์š” {props.name}</div>;
  )
}

export default Hello;

ํ˜น์€ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ์ด์šฉํ•ด ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

function Hello({ color, name }) {
  return <div style={{ color }}>์•ˆ๋…•ํ•˜์„ธ์š” {name} ์ž…๋‹ˆ๋‹ค.</div>;
}

App.js

import Hello from "./Hello";

function App() {
  return (
    <div className="App" style={{ padding: "50px" }}>
      <Hello name="ํ”ผ์นด์ธ„" color="yellow" />
      <Hello name="์น˜์ฝ”๋ฆฌํƒ€" color="green" />
      <Hello name="๋ถ€์Šคํ„ฐ" color="red" />
      <Hello name="๊ผฌ๋ถ€๊ธฐ" color="skyblue" />
      <Hello name={"์‚์‚"} color={"lightpink"} />
    </div>
  );
}


export default App;

<Hello name={"์‚์‚"} color={"lightpink"}/>๋กœ ์จ๋„ ๋ฌธ์ œ์—†์ด ์ž‘๋™.
๋‹น์—ฐํ•œ ์ด์•ผ๊ธฐ์ง€๋งŒ ์—ฌ๊ธฐ์„œ "" ๋Š” ๋นผ๋จน์œผ๋ฉด ์•ˆ๋œ๋‹ค

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ , <Hello /> ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด

name props๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ๋…•ํ•˜์„ธ์š” ๋’ค์— ๋นˆ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๊ณ , ์ƒ‰์ƒ๋„ ์—†์Œ.

props๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์„ ๋•Œ ํ•ญ์ƒ ๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ–๊ณ  ์‹ถ์œผ๋ฉด ์ด๋•Œ defaultProps์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.



defaultProps ์‚ฌ์šฉ๋ฒ•

Hello.defaultProps = {
    name:"์ดˆ๊ธฐ๊ฐ’"
}

์ปดํฌ๋„ŒํŠธ ๋ฐ”๊นฅ์—์„œ defaultProps๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š”
์ปดํฌ๋„ŒํŠธ๋ช….defaultProps = {} ๋กœ ์„ ์–ธ ํ•ด์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ,
๊ฐ์ฒด ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ defaultProps ๋ฅผ ์„ ์–ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰ ์ ์šฉ์‹œ์ผœ๋ณด๋ฉด!

Hello.js

import React from "react";

function Hello({ color, name }) {
  return <div style={{ color }}>์•ˆ๋…•ํ•˜์„ธ์š” {name} ์ž…๋‹ˆ๋‹ค.</div>;
}

Hello.defaultProps = {
  name: "ํฌ์ผ“๋ชฌ์Šคํ„ฐ",
  color: "purple",
};

export default Hello;

App.js

...
      <Hello />
      <Hello color="orange" />
      <Hello name="์‹์Šคํ…Œ์ผ" />
...

์ง€์ •ํ•˜์ง€ ์•Š์€ props์— ๊ธฐ๋ณธ๊ฐ’์ด ๋“ค์–ด ๊ฐ„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

์กฐ๋งŒ๊ฐ„ typescript๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•๋„ ์˜ฌ๋ฆด ์˜ˆ์ •!