๐ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
๐ JSX
- JSX๋ HTML๋ณด๋ค๋ JavaScript์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์, ReactDOM์ HTML ์ดํธ๋ฆฌ๋ทฐํธ ์ด๋ฆ ๋์ camelCase ํ๋กํผํฐ ๋ช
๋ช
๊ท์น์ ์ฌ์ฉํ๋ค.
- ์๋ฅผ ๋ค์ด, JSX์์ class๋ className๊ฐ ๋๊ณ , for๋ htmlFor๊ฐ ๋๋ค.
- ํ๊ทธ๊ฐ ๋น์ด์๋ค๋ฉด XML์ฒ๋ผ
/>
๋ฅผ ์ด์ฉํด ๋ฐ๋ก ๋ซ์์ฃผ์ด์ผ ํ๋ค.
- JSX ํํ์์ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด์ ํํํ ์ ์๊ณ , JSX ์์ฒด๊ฐ ํํ์์ด๊ธฐ ๋๋ฌธ์ return() ๋ฌธ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
๐ ์กฐ๊ฑด๋ถ ๋ ๋๋ง
- return() ๋ฌธ ๋ด์์๋ if-else ๊ตฌ๋ฌธ ๋์ ์ผํญ ์ฐ์ฐ์๋ก ํํํด์ผ ํ๋ค.
- return() ๋ฌธ ๋ด์์๋ if ๊ตฌ๋ฌธ ๋์ ๋
ผ๋ฆฌ ์ฐ์ฐ์๋ก ํํํด์ผ ํ๋ค.
JavaScript์์ true && expression
์ ํญ์ expression์ผ๋ก ํ๊ฐ๋๊ณ , false && expression
์ ํญ์ false๋ก ํ๊ฐ๋๋ค. ๋ฐ๋ผ์ && ๋ค์ ์๋ฆฌ๋จผํธ๋ ์กฐ๊ฑด์ด true์ผ ๋ ์ถ๋ ฅ๋๊ณ , false๋ผ๋ฉด React๋ ๋ฌด์ํ๊ณ ๊ฑด๋๋ด๋ค. ํ์ง๋ง, falsy ํํ์์ ๋ฐํํ๋ฉด && ๋ค์ ์๋ ํํ์์ ๊ฑด๋๋ฐ์ง๋ง, flasy ํํ์์ด ๋ฐํ๋๋ค.
๐ Components
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
๐ Props
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ๋๊ฒจ์ฃผ๊ณ ์ถ์ ๋ props๋ฅผ ํ์ฉํ๋ค.
- props๋ ๊ฐ์ฒด๋ค.
- props๋ ์ฝ๊ธฐ ์ ์ฉ์ด๋ค.
- ๋ชจ๋ React ์ปดํฌ๋ํธ๋ ์์ ์ props๋ฅผ ๋ค๋ฃฐ ๋ ๋ฐ๋์ ์์ ํจ์์ฒ๋ผ ๋์ํด์ผ ํ๋ค.
- props์ ๊ฐ์ด ์๋ค๋ฉด true๊ฐ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- Destructuring์ ํ๋ฉด props๋ฅผ ์๋ตํ ์ ์๋ค.
- ๋๊ฒจ์ค ๊ฐ๋ค์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด Destructuring ํ๋ฉด ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์์ฑํ ์ ์๋ค.
function App() {
const info = {
firstName: "Hana",
lastName: "Jeong",
withImg: true,
};
return (
<div className="App">
<Header title={"Learn React A"} />
<Welcome {...info} />
</div>
);
}
๐ props.children
- props.children์ ์ปดํฌ๋ํธ์ ์ฌ๋ ํ๊ทธ์ ๋ซ๋ ํ๊ทธ ์ฌ์ด์ ๋ด์ฉ์ ํฌํจํ๋ค.
props.children ํ์ฉ
- ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๊ฐ ์ผ๋ฐ์ ์ธ html ํ๊ทธ์ ๊ตฌ์กฐ์ ๋น์ทํ ๊ฒฝ์ฐ
export default function Button(props) {
return <button onClick={props.handleClick}>{props.children}</button>
}
<Button onClick={() => alert("submit")}>์ ์ถํ๊ธฐ</Button>
- ์ปดํฌ๋ํธ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฌํด์ผ ํ๋ ๊ฒฝ์ฐ props.children์ผ๋ก ๋๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค.
๐ ์ฐธ๊ณ ๋ํผ๋ฐ์ค