GiantStepDEV
article thumbnail
๐Ÿ”ฎ React - 10. ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋กœ SPA
๐ŸŽจ Frontend/React 2023. 4. 19. 18:53

๋ผ์šฐํŒ…์ด๋ž€? ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ URL์— ๋”ฐ๋ผ ์•Œ๋งž์€ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ํŽ˜์ด์ง€ ๋ณ„๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด๊ฐ€๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ ์ž…๋‹ˆ๋‹ค. ๐Ÿ‘‰ ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ๋กœ ์‹ฑ๊ธ€ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SPA๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํŽ˜์ด์ง€ ํ•˜๋‚˜๋กœ ๋Œ์•„๊ฐ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํŽ˜์ด์ง€ ์ด๋™์‹œ ๋ฒ„๋ฒ…์ž„ ์—†์ด ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ „ํ™˜๋˜์ง€๋งŒ, ์›น ํŽ˜์ด์ง€ ์ •๋ณด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— SEO์—๋Š” ๋งค์šฐ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ํ—ˆ๋‚˜ ์ด๋Š” HTML metaํƒœ๊ทธ์— ์ •๋ณด๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ๋˜์–ด์„œ ํฌ๊ฒŒ ๊ฑฑ์ •ํ•  ์ •๋„๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ตœ๊ทผ์—๋Š” ์ด๋Ÿฐ..

article thumbnail
๐Ÿ”ฎ React - 9. ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ๋ง
๐ŸŽจ Frontend/React 2023. 4. 18. 18:07

๋ฆฌ์•กํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์Šคํƒ€์ผ๋ง ํ•  ๋•Œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ๋งˆ๋‹ค ์š”๊ตฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ณ  ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ๊ฐ์ž ์ทจํ–ฅ์— ๋”ฐ๋ผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹ ์ผ๋ฐ˜ CSS : ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹ Sass : ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” CSS ์ „์ฒ˜๋ฆฌ๊ธฐ ์ค‘ ํ•˜๋‚˜๋กœ ํ™•์žฅ๋œ CSS ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ CSS ์ฝ”๋“œ๋ฅผ ๋”์šฑ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ค๋‹ˆ๋‹ค. CSS Module : ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•  ๋•Œ CSS ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ CSS ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ์ ˆ๋Œ€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ํŒŒ์ผ๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋Š” ์˜ต์…˜ ์ž…๋‹ˆ๋‹ค. styled-components : ์Šคํƒ€์ผ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ๋‚ด์žฅ์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•จ๊ณผ ๋™์‹œ์— ํ•ด๋‹น ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๐Ÿ”ฎ ๋ฆฌ์•ก..

article thumbnail
๐Ÿ”ฎ React - 8. Hook
๐ŸŽจ Frontend/React 2023. 4. 17. 18:31

Hook ๋ฆฌ์•กํŠธ ๋ฒ„์ „ 16.8์— ์ƒˆ๋กœ ๋„์ž…๋œ ๊ธฐ๋Šฅ ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” useState, ๋ Œ๋”๋ง ์งํ›„ ์„ค์ •ํ•˜๋Š” useEffect ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ธฐ์กด์˜ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Hook์€ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ React state์™€ ์ƒ๋ช…์ฃผ๊ธฐ ๊ธฐ๋Šฅ์„ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค. โญ๏ธ useState useState()๋Š” ๋ฆฌ์•กํŠธ์—์„œ ์ƒํƒœ(state)๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” hook ์ž…๋‹ˆ๋‹ค. useState()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค. useState()๋Š” ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” 'ํ˜„์žฌ ์ƒํƒœ'์ด๊ณ , ๋‘ ๋ฒˆ์งธ..

article thumbnail
๐Ÿ”ฎ React - 7. ์ปดํฌ๋„ŒํŠธ ๋ฐ˜๋ณต (Array, Map)
๐ŸŽจ Frontend/React 2023. 4. 13. 13:54

๋ฆฌ์•กํŠธ์—์„œ ๋ฐฐ์—ด๊ณผ ๋งต์€ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ์ˆœ์„œ๊ฐ€ '์žˆ๋Š”' ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ, ๊ฐ ์š”์†Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งต์€ key์™€ value๋ฅผ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ๋กœ, key์™€ value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ key๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ณ ์œ ํ•œ ๊ฐ’ ์ž…๋‹ˆ๋‹ค. ๊ณ ์ • ๋ฐฐ์—ด ๋ Œ๋”๋ง ๐Ÿ™ ๋น„ํšจ์œจ ์ ์ธ ๋ฐฉ๋ฒ• : ๋ฐฐ์—ด ๊ทธ๋Œ€๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• import React from 'react'; const ArrayTest = () => { const users = [ { id: 100, userName: 'Karly', eMail: 'king@naver.com' }, { id: 200, userName: 'Elastine', eMail: 'hoho@gmail.com' }, { id: 300, userN..

article thumbnail
๐Ÿ”ฎ React - 6. Ref์™€ DOM
๐ŸŽจ Frontend/React 2023. 4. 13. 13:48

Ref ์ฐธ์กฐ(reference)์˜ ์ค„์ž„๋ง๋กœ, React์—์„œ DOM ์š”์†Œ๋‚˜ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ฐธ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ชฉ์  DOM ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๐Ÿ‘‰ Ref๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOM ์š”์†Œ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํฌ์ปค์Šค ์„ค์ •, ํ…์ŠคํŠธ ์„ ํƒ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ id๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ !!! ๐Ÿ‘‰ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ๋„ id๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. JSX ์•ˆ์—์„œ DOM์— id๋ฅผ ๋‹ฌ๋ฉด ํ•ด๋‹น DOM์„ ๋ Œ๋”๋ง ํ•  ๋•Œ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์ผํ•ด์•ผ ํ•  id๊ฐ€ ์ค‘๋ณต id๋กœ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. useRef Reac..

article thumbnail
๐Ÿ”ฎ React - 5. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง
๐ŸŽจ Frontend/React 2023. 4. 12. 20:27

๋ฆฌ์•กํŠธ์—์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง์€ HTML๊ณผ '๋น„์Šท'ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” JSX ์š”์†Œ์˜ props๋กœ ์ „๋‹ฌ๋˜๋ฉฐ, ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜ ์ •์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ด๋ฒคํŠธ์— ์—ฐ๊ฒฐ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜์—์„œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ import React, {useState} from "react"; const EventHandler = () => { const [message,setMessage] = useState("์•ˆ๋…•ํ•˜์„ธ์š”."); // ๊ฐ’์ด ์•„๋‹Œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ƒํƒœ๊ฐ€ ๋ณ€ํ–ˆ๋Š”์ง€ ํŒ๋‹จํ•จ. const changeMessage= (e) => { setMessage(e.target.value); } return ( ์ด๋ฒคํŠธ ์—ฐ์Šต ์ž…๋ ฅ ๋ฐ›์€ ๋ฉ”์‹œ์ง€ : {message} ); } export defau..

article thumbnail
๐Ÿ”ฎ React - 4. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ useState ์‚ฌ์šฉํ•˜๊ธฐ
๐ŸŽจ Frontend/React 2023. 4. 11. 20:11

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ... ๐Ÿ‘‰ ๋ฆฌ์•กํŠธ 16.8 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 16.8 ๋ถ€ํ„ฐ๋Š” useState๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์™€ ์กฐ๊ธˆ ๋‹ค๋ฅธ๋ฐ์š”. ์ด ๊ณผ์ •์—์„œ Hook์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โญ๏ธ ๋ฐฐ์—ด ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น ๋ฐฐ์—ด ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ES6 ๋ฌธ๋ฒ• ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค. // ์˜ˆ์ œ 1.(๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด) const person = { name: 'ํ™๊ธธ๋™', age: 30, address: '์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ', email: 'honggildong@naver.com' } const { name, age } = person; // ์˜ˆ์ œ 2. (๋ฐฐ์—ด) const col..

article thumbnail
๐Ÿ”ฎ React - 3. ์ปดํฌ๋„ŒํŠธ(Component)
๐ŸŽจ Frontend/React 2023. 4. 11. 19:19

์ปดํฌ๋„ŒํŠธ? UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ ์ž…๋‹ˆ๋‹ค. ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์ฒด์ ์ธ UI์™€ ์ƒํƒœ(state)๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. props์™€ state๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ , return๋ฌธ์—๋Š” UI์š”์†Œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. (React๋Š” ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ DOM ํƒœ๊ทธ๋กœ ์ฒ˜๋ฆฌ ํ•จ) props : ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ state : ์ปดํฌ๋„ŒํŠธ ์ž์ฒด์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ, state๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ปดํฌ๋„ŒํŠธ๋Š” ๋‹ค์‹œ ๋ Œ๋”๋ง ๋จ.(โญ๏ธhook) ์ปดํฌ๋„ŒํŠธ๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ตœ๊ทผ์—๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ถ”์„ธ์ž…๋‹ˆ๋‹ค. ๊ทธ..

article thumbnail
๐Ÿ”ฎ React - 2. JSX(JavaScript XML)
๐ŸŽจ Frontend/React 2023. 4. 10. 20:51

JSX ? JSX (JavaScript XML)์€ JavaScript ์–ธ์–ด์˜ ํ™•์žฅ์œผ๋กœ, ๊ฐœ๋ฐœ์ž๋“ค์ด JavaScript ์ฝ”๋“œ ๋‚ด์—์„œ HTML๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ธ๊ธฐ์žˆ๋Š” JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ React์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. JSX๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” JavaScript์™€ HTML์˜ ํ˜ผํ•ฉ๋ฌผ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSX(JavaScript XML)๋Š” Javascript์— XML์„ ์ถ”๊ฐ€ํ•œ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ด๋‹ค. JSX๋Š” ๋ฆฌ์•กํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๊ณต์‹์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์€ ์•„๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฐ”๋ฒจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. JSX๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ..

article thumbnail
๐Ÿ”ฎ React - 1. React ์‹œ์ž‘ํ•˜๊ธฐ!
๐ŸŽจ Frontend/React 2023. 4. 10. 20:22

๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐฐ์šธ ๋•Œ๋Š”, ๊ทธ๊ฒƒ์ด ์–ด๋””์„œ ์™”๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. - GiangStepDEV Why React? ์•ˆ์ •ํ™” ๋œ์ง€ ์–ผ๋งˆ ์•ˆ ๋œ ๋ฆฌ์•กํŠธ, ์™œ ์ด๋ ‡๊ฒŒ ํ•ซํ• ๊นŒ์š”? ๋ชจ๋“  ๊ธฐ์ˆ  ํŠธ๋ Œ๋“œ๋Š” ๊ทธ๊ฒƒ์ด ๋‚˜์˜ค๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€๋ฉด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ฐ„๋‹จํ•œ ์—ฐ์‚ฐ์„ ํ•˜๊ฑฐ๋‚˜ ์‹œ๊ฐ์ ์ธ ํšจ๊ณผ๋ฅผ ์ฃผ๋Š” ๋‹จ์ˆœํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์— ๋ถˆ๊ณผํ–ˆ์ง€๋งŒ ํ˜„์žฌ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ ์˜์—ญ์„ ํ™•์žฅํ•˜์—ฌ ์„œ๋ฒ„์‚ฌ์ด๋“œ๋Š” ๋ฌผ๋ก  ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์—„์ฒญ๋‚œ ํ™œ์•ฝ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๊ณ  ๊ฑฐ๋Œ€ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ์—๋Š” ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•˜์˜€์œผ๋ฉฐ, ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ์ฃผ๋กœ..