์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- State
- ์๋งจํฑ์์
- css
- css animation
- React
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- JavaScript
- WEB
- ๋ฒ์ง ๋ชจํ
- prototype
- Cmarket
- ํ๋ก๊ทธ๋๋จธ์ค
- Lifting state
- ๋ฒ๋ค๋ง
- ํผํฐ ๋ชจ๋น
- ์คํ ์ด์ธ ์ฝ๋
- git
- Study
- fetch api
- ์ปดํจํฐ ๊ณตํ
- ํ ์คํธ ์์
- BFS์ DFS
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ๊ณ ์ฐจํจ์
- ์ ์ด์ฝฅ ๋์จ
- props drilling
- jsx
- html
- Effect Hook
- wai-aria
- Today
- Total
roqkf
[React] React & JSX ๋ณธ๋ฌธ
React
- ํ๋ก ํธ์ค๋ ๊ฐ๋ฐ์ ์ํ JavaScript ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React์ 3๊ฐ์ง ํน์ง
- ์ ์ธํ
๋ฆฌ์กํธ๋ ํ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด HTML/ CSS/ JS๋ก ๋๋ ์ ์ ๊ธฐ๋ณด๋ค๋ ํ๋์ ํ์ผ์ ๋ช ์์ ์ผ๋ก ์์ฑํ ์ ์๊ฒ JSX๋ฅผ ํ์ฉํ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ์ ์งํฅํ๋ค ๋ช ์์ ์ด์ ์ด๋ผ๋ ๊ฒ์ ์ฝ๋๋ฅผ ์์ธํ ๋ถ์ํ์ง ์์๋ ์ฝ๋์ ์ผ๋ถ๋ฅผ ๋ถ๋ช ํ ์ ์ ์๊ฒ ์์ฑํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ
๋ฆฌ์กํธ๋ ํ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํด ์ฌ๋ฌ ์ข ๋ฅ์ ์ฝ๋๋ฅผ ๋ฌถ์ด๋ ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ/ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ฉด ์๋ก ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ๊ธฐ๋ฅ ์์ฒด์ ์ง์คํ์ฌ ๊ฐ๋ฐํ ์ ์๋ค
- ๋ฒ์ฉ์ฑ
๋ฆฌ์กํธ๋ JavaScript ํ๋ก์ ํธ ์ด๋์๋ ์ ์ฐํ๊ฒ ์ ์ฉ๋ ์ ์๋ค. Facebook์์ ๊ด๋ฆฌ๋ผ ์์ ์ ์ด๊ณ , ๊ฐ์ฅ ์ ๋ช ํ๋ฉฐ, ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ก ๋ชจ๋ฐ์ผ ๊ฐ๋ฐ์ด ๊ฐ๋ฅ/ ํ๋ผ์์ํฌ๋ ์ํ๊ณ์ ์กด์ํ๋ฉฐ, ๋ฆฌ์กํธ๋ ๊ธฐ์กด ํ๋ก์ ํธ์๋ ์ ์ฐํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
JSX
JavaScript XML์ ์ค์๋ง๋ก, ๋ฌธ์์ด๋ ์๋๊ณ HTML๋ ์๋ React์์ UI๋ฅผ ๊ตฌ์ฑํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ผ๋ก JavaScript๋ฅผ ํ์ฅํ ๋ฌธ๋ฒ! / ๋ฌธ๋ฒ์ ์ด์ฉํ์ฌ React ์๋ฆฌ๋จผํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ฃ JSX๋ JS์ ํ์ฅ๋ ๋ฌธ๋ฒ์ด์ง๋ง, ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ๋ก ์คํํ ์ ์๋ JS ์ฝ๋๊ฐ ์๋๋ค!
๐ก ๊ทธ๋ฌ๋ฏ๋ก ๋ฐ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ JS ์ฝ๋๋ก ๋ณํํด ์ค์ผ ํ๋ค!
๐ฅ ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก Babel !
๐ฃ Babel์ด๋?
๐ก JSX๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ JavaScript๋ก ์ปดํ์ผํ๋ฉฐ, ์ปดํ์ผ ํ์ JavaScrip๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ๊ณ ํ๋ฉด์ ๋ ๋๋งํ ์ ์๋ค!
๐ฃ React์์๋ DOM๊ณผ๋ ๋ค๋ฅด๊ฒ CSS, JSX ๋ฌธ๋ฒ๋ง์ ๊ฐ์ง๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋ค!
๐ก ์ปดํฌ๋ํธ ํ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ํ์ํ ํ์ผ์ด ์ค์ด๋ค์์ผ๋ฉฐ, ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ํ์ธํ ์ ์๋ค
๐ JSX๋ฅผ ์ฌ์ฉํ๋ฉด JavaScript๋ง์ผ๋ก ๋งํฌ์
ํํ์ ์ฝ๋๋ฅผ ์์ฑํด์ DOM์ ๋ฐฐ์นํ ์ ์๊ฒ ๋๋ ๊ฒ!
+ ์ฃผ์ํ ์ : JSX๋ HTML์ฒ๋ผ ์๊ฒผ์ง๋ง HTML์ด ์๋๊ธฐ ๋๋ฌธ์Babel ์ ์ด์ฉํ ์ปดํ์ผ ๊ณผ์ ์ด ํ์ํ๋ค.
DOM์์ JS์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด์๋ JS์ HTML์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์์ ์ด ํ์ํ๋ค lnline ๋ฐฉ์์ด๋ script ํ๊ทธ๋ฅผ ์ด์ฉํด JS ํ์ผ์ ์ฐ๊ฒฐํ ์ ์๋ค.
ํ์ง๋ง React์์๋ JSX๋ฅผ ์ด์ฉํด์ ์์ ๋ณด์๋ DOM ์ฝ๋๋ณด๋ค ๋ช
์์ ์ผ๋ก ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํ๋ค. JS ๋ฌธ๋ฒ๊ณผ HTML ๋ฌธ๋ฒ์ ๋์์ ์ผ๋ก ์ด์ฉํด ๊ธฐ๋ฅ๊ณผ ๊ตฌ์กฐ๋ฅผ ํ๋์ ํ์ธํ ์ ์๋ค.
๐ ์ด๋ ๊ฒ ๊ตฌ์กฐ์ ๋์์ ๋ํ ์ฝ๋๋ฅผ ํ ๋ญ์น๋ก ์ ์ ์ฝ๋์ ์ ์ปดํฌ๋ํธ ๋ผ๊ณ ํ๋ค!
๐ค JSX ์์ด React ์์๋ฅผ ๋ง๋ค ์๋ ์์๊น?
- JSX ์์ด๋ React ์์๋ฅผ ๋ง๋ค ์ ์์ง๋ง, ์ฝ๋๊ฐ ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค!
DOM์ผ๋ก ์๋ฆฌ๋จผํธ ์์ฑํ๊ธฐ ์์
DOM์์ Hello, HTML DOM ์ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ด HTML๊ณผ JS๋ฅผ ์ฐ๊ฒฐํ๋ ์์ ์ ์งํํด์ผ ํ๋ค.
React ๋ก ์๋ฆฌ๋จผํธ ์์ฑํ๊ธฐ ์์
DOM์์์๋ ๋ฌ๋ฆฌ App.js ์ด ํ ๊ฐ์ JS ํ์ผ ์์์ HTML๊ณผ JS๋ก ๋๋์ด์ก๋ ๋ ๊ฐ์ง ์ผ์ ํ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ์๋ค. ํ๋์ ํ์ผ์์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์กฐ์ ๋์์ ํ๋์ ํ์
ํ ์ ์๋ค. JSX๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ง ๋ฐ๋ผ๋ณด๋ ๊ฒ ์๋๋ผ, ๊ตฌ์กฐ๋ ๋ฐ๋ผ๋ณด๊ฒ ๋๋๋ค!!
JSX ํ์ฉ
โ JSX ๊ท์น
๐จ ํ๋์ ์๋ฆฌ๋จผํธ ์์ ๋ชจ๋ ์๋ฆฌ๋จผํธ๊ฐ ํฌํจ๋์ด์ผ ํ๋ค!
JSX์์ ์ฌ๋ฌ ์๋ฆฌ๋จผํธ๋ฅผ ์์ฑํ๋ ค๊ณ ํ ๋, ์ต์์์์ opening tag์ closing tag๋ก ๊ฐ์ธ์ค์ผ ํ๋ค!
๐จ React์์ CSS class ์์ฑ์ ์ง์ ํ๊ธฐ ์ํด์ "className"์ผ๋ก ํ๊ธฐํด์ผ ํ๋ค!
๋ง์ฝ์ className ์ด ์๋ class ๋ก ์์ฑํ๊ฒ ๋๋ค๋ฉด React์์๋ html ํด๋์ค ์์ฑ์ด ์๋ JS ํด๋์ค๋ก ๋ฐ์๋ค์ด๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์ํ๋ค
๐จ JavaScript ํํ์ ์ฌ์ฉ ์, ์ค๊ดํธ({})๋ฅผ ์ด์ฉํ๋ค!
JSX์์ JavaScript๋ฅผ ์ฐ๊ณ ์ ํ๋ค๋ฉด, ๊ผญ ์ค๊ดํธ๋ฅผ ์ด์ฉํด์ผ ํ๋ค. ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ผ๋ฐ ํ
์คํธ๋ก ์ธ์ํ๋ค!
๐จ ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ ๋๋ฌธ์๋ก ์์ํ๋ค!
React ์๋ฆฌ๋จผํธ๊ฐ JSX๋ก ์์ฑ๋๋ฉด ๋๋ฌธ์๋ก ์์ํด์ผ ๋๋ค. ์๋ฌธ์๋ก ์์ํ๊ฒ ๋๋ค๋ฉด ์ผ๋ฐ์ ์ธ HTML ์๋ฆฌ๋จผํธ๋ก ์ธ์ํ๊ฒ ๋จ! ๋๋ฌธ์๋ก ์์ฑ๋ JSX ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋ก ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๐จ ์กฐ๊ฑด๋ถ ๋ ๋๋ง์๋ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค!
์กฐ๊ฑด๋ถ ๋ ๋๋ง์ if๋ฌธ์ด ์๋ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค
๐จ ์ฌ๋ฌ ๊ฐ์ HTML ์๋ฆฌ๋จผํธ๋ฅผ ํ์ํ ๋๋ map() ํจ์๋ฅผ ์ฌ์ฉํ๋ค!
React์์ ์ฌ๋ฌ ๊ฐ์ HTML ์๋ฆฌ๋จผํธ๋ฅผ ํ์ํ ๋๋ map() ํจ์๋ฅผ ์ฌ์ฉํ๋ค. map ํจ์๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฐ๋์ key JSX ์์ฑ์ ๋ฃ์ด์ผ ํ๋ค. ๋ง์ฝ์ key JSX ์์ฑ์ ๋ฃ์ง ์์ผ๋ฉด ๋ฆฌ์คํธ์ ๊ฐ ํญ๋ชฉ์ key๋ฅผ ๋ฃ์ด์ผ ํ๋ค๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋๋ค!
'๐ป Development > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] React์์์ State ์ด๋ฒคํธ ์ฒ๋ฆฌ (1) | 2022.11.30 |
---|---|
[React] React State & Props (0) | 2022.11.30 |
[React] React Router (0) | 2022.11.30 |
[React] SPA (0) | 2022.11.30 |
[React] key JSX ์์ฑ์ด ํ์ํ ์ด์ (0) | 2022.11.27 |