[TIL] default props

๋ฐฐ์ด ์ ์๋ ๊ฑฐ ๊ฐ์๋ฐ ๊ฐ๋ฌผ๊ฐ๋ฌผ..
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๋ก ์ฌ์ฉํ๋ ๋ฒ๋ ์ฌ๋ฆด ์์ !