๐ซ React_02 props
๐ฎ props๋ฅผ ํตํด ์ปดํฌ๋ํธ์๊ฒ ๊ฐ ์ ๋ฌํ๊ธฐ
๐ฒ props์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
- App ์ปดํฌ๋ํธ์์ Hello ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉ
name
์ด๋ผ๋ ๊ฐ์ ์ ๋ฌ
// App.js
import React from "react";
import Hello from "./Hello";
function App() {
return <Hello name="react" />;
}
export default App;
- Hello ์ปดํฌ๋ํธ์์
name
๊ฐ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋,
// Hello.js
import React from "react";
function Hello(props) {
return <div>Hey, {props.name}</div>;
}
export default Hello;
- ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌ๋๋ props๋ ํผ๋ผ๋ฏธํฐ๋ฅผ ํตํด ์กฐํ
- props๋ ๊ฐ์ฒด ํํ๋ก ์ ๋ฌ
name
๊ฐ์ ์กฐํํ๊ณ ์ถ๋ค๋ฉดprops.name
์ผ๋ก ์กฐํ
๐ฒ ์ฌ๋ฌ ๊ฐ์ props, ๋น๊ตฌ์กฐํ ํ ๋น
- Hello ์ปดํฌ๋ํธ์
color
๋ผ๋ ๊ฐ์ props๋ก ์ถ๊ฐ ์ ๋ฌ
// App.js
import React from "react";
import Hello from "./Hello";
function App() {
return (
<div className="App">
<Hello name="bori" color="#999" />
</div>
);
}
export default App;
// Hello.js
import React from "react";
function Hello(props) {
return <div style={{ color: props.color }}>Hey, {props.name}</div>;
}
export default Hello;
- props ๋ด๋ถ ๊ฐ์ ์กฐํํ ๋๋ง๋ค
props.
๋ฅผ ๋ถ์
=> ๋น๊ตฌ์กฐํ ํ ๋น(๋๋ ๊ตฌ์กฐ ๋ถํด)๋ฌธ๋ฒ์ ์ฌ์ฉํด ์ฝ๋ ๊ฐ๊ฒฐํ
// Hello.js
import React from "react";
function Hello({ name, color }) {
return <div style={{ color: color }}>Hey, {name}</div>;
}
export default Hello;
๐ฒ defaultProps๋ก ๊ธฐ๋ณธ๊ฐ ์ค์
defaultProps
๊ฐ์ ์ค์
=> ์ปดํฌ๋ํธ์ props๋ฅผ ์ง์ ํ์ง ์์์ ๋ ์ฌ์ฉํ ๊ฐ์ ์ค์
import React from "react";
function Hello({ name, color }) {
return <div style={{ color: color }}>Hey {name}</div>;
}
Hello.defaultProps = {
name: "์ด๋ฆ ์์",
};
export default Hello;
import React from "react";
import Hello from "./Hello";
function App() {
return (
<div className="App">
<Hello name="bori" color="#999" />
<Hello color="#333" />
</div>
);
}
export default App;
๐ฒ props.childred
props.childred
์กฐํ : ์ปดํฌ๋ํธ ํ๊ทธ ์ฌ์ด์ ๋ฃ์ ๊ฐ์ ์กฐํsrc
ํด๋์ Wrapper ์ปดํฌ๋ํธ ์์ฑ
=> Wrapper ํ๊ทธ ๋ด๋ถ์ Hello ์ปดํฌ๋ํธ ๋ฃ๊ธฐ
=> Wrapper ์ปดํฌ๋ํธ๋ฅผ App ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๊ธฐ- Wrapper์ ๋ด๋ถ ๋ด์ฉ์ด ๋ณด์ฌ์ง๋ ค๋ฉด
props.children
์ ๋ ๋๋ง ํด์ค๋ค.
=>props.children
๊ฐ ์์ผ๋ฉด Hello ์ปดํฌ๋ํธ๋ค์ด ๋ณด์ด์ง ์๋๋ค.
// Wrapper.js
import React from "react";
function Wrapper({ children }) {
const style = {
border: "2px solid #333",
padding: "15px",
};
return <div style={style}>{children}</div>;
}
export default Wrapper;
// App.js
import React from "react";
import Hello from "./Hello";
import Wrapper from "./Wrapper";
function App() {
return (
<Wrapper>
<Hello name="bori" color="#999" />
<Hello color="#333" />
</Wrapper>
);
}
export default App;
๐ฒ ์กฐ๊ฑด๋ถ ๋ ๋๋ง
- ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์ ๋ ๋๋ง ํ๋ ๊ฒ
- App ์ปดํฌ๋ํธ์์ Hello ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ๋.
isSpecial
์ด๋ผ๋ props๋ฅผ ์ค์
=> Hello ์ปดํฌ๋ํธ์์isSpecial
์ดture
์ด๋false
์ด๋์ ๋ฐ๋ผ ์ปดํฌ๋ํธ์ ์ข์ธก์*
ํ์ ์ฌ๋ถ
// App.js
function App() {
return (
<Wrapper>
<Hello name="bori" color="#999" isSpecial={true} />
<Hello color="#333" />
</Wrapper>
);
}
// Hello.js
// ์ผํญ์ฐ์ฐ์ ์ฌ์ฉ
function Hello({ name, color, isSpecial }) {
return (
<div style={{ color }}>
{isSpecial ? <b>*</b> : null}
Hey {name}
</div>
);
}
- ๋จ์ํ ํน์ ์กฐ๊ฑด์ด
true
๋ฉด ๋ณด์ฌ์ฃผ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์จ๊ธฐ๋ ๊ฒฝ์ฐ
=>&&
์ฐ์ฐ์ ์ฌ์ฉ
{isSpecial ? <b>*</b> : null}
=>{isSpecial && <b>*</b>}
๋จ์ถํ๊ฐ(short-circuit evaluation) ๋ ผ๋ฆฌ ๊ณ์ฐ๋ฒ
true && true; // true true && false; // false true || false; // ture false || true; // trus false || false; // ๋ค์ false๊ฐ ์ถ๋ ฅ
A && B
: A๊ฐ Truthyํ ๊ฐ์ด๋ผ๋ฉด B๊ฐ ๊ฒฐ๊ณผ๊ฐ์ด ๋๊ณ , A๊ฐ Falsyํ ๊ฐ์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋ A๊ฐ ๋๋ค.A || B
: A๊ฐ Truthyํ ๊ฐ์ด๋ผ๋ฉด A๊ฐ ๊ฒฐ๊ณผ๊ฐ, A๊ฐ Falsyํ ๊ฐ์ด๋ผ๋ฉด ๊ฒฐ๊ณผ๋ B
๐ฒ props ๊ฐ ์ค์ ์๋ต = {true}
- ์ปดํฌ๋ํธ์ props ๊ฐ์ ์ค์ ํ ๋, props ์ด๋ฆ๋ง ์์ฑํ๊ณ ๊ฐ์ ์๋ตํ๋ค๋ฉด,
true
๋ก ์ค์ ํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ
isSpecial
=isSpecial={true}
์ฐธ๊ณ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ซ React_02 props), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@qhflrnfl4324/React02-props์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค