์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Algorithm
- ํ์ ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ๋ก์ธ์ค
- react-query
- ๋ฉ๋ชจ๋ฆฌ
- react
- typescript
- ์ค๋ ๋
- ๋ฆฌ์กํธ
- ๊ฐ๋ฐ์๋ถํธ์บ ํ
- cs #๋คํธ์ํฌ
- ip
- ์๋ฐ์คํฌ๋ฆฝํธ
- IT๊ฐ๋ฐ์บ ํ
- ํด์
- ์ ๋ฐ๋ฏธ
- javascript
- ํ๋ก์ ํธ์บ ํ
- ๋คํธ์ํฌ
- App Runner
- html
- ์ค๋์ดํผํฉํ ๋ฆฌ
- #ํ๋ก์ ํธ์บ ํ #ํ๋ก์ ํธ์บ ํํ๊ธฐ #์ ๋ฐ๋ฏธ #์ค๋์ดํผํฉํ ๋ฆฌ #์ ์ง์ฝํฌ๋น #์ธ์ฌ์ด๋์์ #IT๊ฐ๋ฐ์บ ํ #๊ฐ๋ฐ์๋ถํธ์บ ํ #๋ฆฌ์กํธ #react #๋ถํธ์บ ํ #๋ฆฌ์กํธ์บ ํ
- ์ธ์ฌ์ด๋์์
- ์๊ณ ๋ฆฌ์ฆ
- ์ ์ง์ฝํฌ๋น
- React.js
- BFS
- CS
- Today
- Total
Bin's Blog
[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 17์ผ์ฐจ - ๋ฆฌ์กํธ(1) ๋ณธ๋ฌธ
[์ ๋ฐ๋ฏธx์ค๋์ดํผํฉํ ๋ฆฌ] 10์ฃผ ์์ฑ ํ๋ก์ ํธ ์บ ํ 17์ผ์ฐจ - ๋ฆฌ์กํธ(1)
hotIce 2023. 6. 21. 17:54
๐ค ๋ฆฌ์กํธ๋ ๋ญ์ง?
๐ ์ฌ์ฉ์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
๐ ํ์ด์ค๋ถ์ด ๊ฐ๋ฐํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ฉฐ ๊ฐ๋ฐ์๋ค์ด ์น ํ์ด์ง ํน์ ์ฑ์ ๋ณต์กํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ก ์ง์ํ๋ค.
๐ Vue์ ๋น๊ตํ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถ๋ฅ๋๋ ์ด์ ๋ ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ์ ์ฒด์ ์ธ ๊ธฐ๋ฅ ์งํฉ์ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฅผ ๋ค์ด, React๋ ๋ผ์ฐํ , HTTP ์์ฒญ, form validation ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ ์ ๊ณตํ์ง ์๋๋ค.
๐ ๋ฆฌ์กํธ ํน์ง
๐ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ: ์ปดํฌ๋ํธ๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๋ค. ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์กฐ๊ฐ์ผ๋ก, ๊ฐ ์ปดํฌ๋ํธ๋ ์์ฒด ๋ก์ง์ ๊ฐ์ง๋ฉฐ, ๊ทธ ๋ก์ง์ JavaScript ํจ์๋ฅผ ํตํด ์์ฑ๋๋ค. ์ด๋ก ์ธํด UI๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ๋ณ์ ์ธ ์กฐ๊ฐ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฝ๊ฒ ์ดํดํ๊ณ ์์ ํ๋ฉฐ, ํ ์คํธ ๊ฐ๋ฅํ๋ฉฐ ํ๋ฉด์ ์ ๋ฐ์ดํธ ํ๋๋ฐ ์ต์ ํ ๋์ด ์๋ค.
๐ ์ ์ธ์ ์ ๊ทผ: ๊ฐ๋ฐ์๊ฐ ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํด์ผ ํ๋์ง์ ๋ํด ์์ธํ ์ค๋ช ํ์ ์์ด, ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ธํ๋ฉด React๊ฐ ์ด๋ฅผ ๋๋ฌํ๋๋ก ์ ์ ํ JavaScript ์ฝ๋๋ฅผ ์์ฑํ๋ค.
๐ ๊ฐ์ ๋: ๋ฆฌ์กํธ๋ ๊ฐ์๋์ด๋ผ๋ ๊ฐ๋ ์ ๋์ ํ๋๋ฐ, ์ค์ DOM์ ์ง์ ์กฐ์ํ๋ ๋์ , React๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์์ DOM์ ์์ฑํ๊ณ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๋ ์ด ๊ฐ์์ DOM์ ์ค์ DOM๊ณผ ๋น๊ตํ์ฌ ์ต์ํ์ ๋ณ๊ฒฝ๋ง์ ๋ฐ์ํ๋ค.
๐ ๋ฆฌ์กํธ Hooks: ๋ฆฌ์ก์ ์ต์ ๊ธฐ๋ฅ ์ค ํ๋๋ก, ํด๋์ค ์ปดํฌ๋ํธ์ ๊ธฐ๋ฅ์ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๋ค. state ๊ด๋ฆฌ๋ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋ ๋ฑ์ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
1๏ธโฃ createElement ํจ์
๐ ์ด ํจ์๋ฅผ ์ฌ์ฉํ์ฌ React ์๋ฆฌ๋จผํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ React ์๋ฆฌ๋จผํธ๋ React์์ UI๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์์ ์กฐ๊ฐ์ด๋ค.
๐ ์ฒซ ๋ฒ์งธ ์ธ์๋ ์์ฑํ ์์์ ํ์(Ex. div, h1, p...)
๐ ๋ ๋ฒ์งธ ์ธ์๋ ์์์ ์์ฑ(Ex. className, style, onClick)๊ณผ ๊ฐ์ ์์ฑ
๐ ์ธ ๋ฒ์งธ ์ธ์๋ ์์์ ์์(children) - ์์ ๋ด๋ถ์ ๋ค๋ฅธ ์์๋ ํ ์คํธ๋ฅผ ํฌํจ์ํฌ ์ ์๋ค.
const container = React.createElement("div", null, "hello");
2๏ธโฃ JSX(JS + XML)
๐ const element = <h1>hello world</h1>์ ๊ฐ์ ํํ๋ก ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ์ปดํฌ๋ํธ ์์ ๋ค์ด๊ฐ๋ HTML ์์๋ค์, JS ์์์ ์ค์ HTML์ ๋ชจ์ต๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ค.
๐ ์ผ๋ฐ์ ์ผ๋ก HTML๊ณผ ๋งค์ฐ ์ ์ฌํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ , ๋ธ๋ผ์ฐ์ ์์ ๋ฐ๋ก ์คํํ ์ ์์ง๋ง, Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ํตํด ์ผ๋ฐ JavaScript ์ฝ๋๋ก ๋ณํ๋๋ค.
๐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์ค๊ดํธ `{}`๋ก ๊ฐ์ธ์ ์ง์ ์ฝ์ ํ ์ ์๋ค.
function App() {
const name = 'React';
return <h1>Hello, {name}</h1>;
}
3๏ธโฃ React ๊ธฐ๋ณธ๊ตฌ์กฐ
<div id='root'></div>
<script type='text/babel'>
function Function() {
return()
}
// ํจ์์ ์ฒซ๊ธ์๋ ๋๋ฌธ์
ReactDOM.render(<Function />, root)
</script>
4๏ธโฃ UseState
๐ ๊ธฐ๋ณธ์ ์ธ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ Hook์ด๋ค. ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ํด๋น ์ํ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋๋ก ๋์์ค๋ค.
๐ useState๋ ํ๋์ ์ธ์๋ฅผ ๋ฐ๋๋ฐ, ์ด๋ ์ํ์ ์ด๊ธฐ๊ฐ์ด๋ค. ๋ฐํ ๊ฐ์ ๋ฐฐ์ด๋ก, ์ฒซ ๋ฒ์งธ ์์๋ ์ํ๋ณ์, ๋ ๋ฒ์งธ ์์๋ ํด๋น ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋ ํจ์์ด๋ค.
const [count, setCount] = React.useState(0);
๐ ์ฌ์ฉ ์์
function App() {
let [๋ฉ๋ด, ๋ฉ๋ด๋ณ๊ฒฝ] = React.useState(["๊น๋ฐฅ", "๋ผ๋ฉด", "๋ก๋ณถ์ด"]);
let [์ข์์, ์ข์์๋ณ๊ฒฝ] = React.useState(0);
return (
<div className="App">
<div className="black-nav">
<h4>blog</h4>
</div>
<div className="list">
<h4> { ๋ฉ๋ด[0] } <span onClick={ () => { ์ข์์๋ณ๊ฒฝ(์ข์์+1) } }>๐</span> { ์ข์์ } </h4>
<p>1์ 10์ผ</p>
</div>
<div className="list">
<h4> { ๋ฉ๋ด[1] } </h4>
<p>1์ 10์ผ</p>
</div>
<div className="list">
<h4> { ๋ฉ๋ด[2] } </h4>
<p>1์ 10์ผ</p>
</div>
</div>
);
}
๋ณธ ํ๊ธฐ๋ ์ ๋ฐ๋ฏธ-์ค๋์ดํผํฉํ ๋ฆฌ 10์ฃผ ์์ฑ ํ๋ก์ ํธ์บ ํ ํ์ต ์ผ์ง ํ๊ธฐ๋ก ์์ฑ ๋์์ต๋๋ค.