728x90
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 46

React] Hook : useState

useState Component๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํƒœ๊ฐ’์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ์˜ ๋™์  ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ํ”ํžˆ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋˜์ง€๋งŒ, ์•„๋ž˜์™€๊ฐ™์€ ํŠน์ง•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋ž‘์€ ๋Š๋‚Œ๋งŒ ๊ฐ™์ง€ ๋งŽ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. const [๋ณ€์ˆ˜์ด๋ฆ„, set๋ณ€์ˆ˜์ด๋ฆ„] = useState(์ดˆ๊ธฐ๊ฐ’); set๋ณ€์ˆ˜์ด๋ฆ„์€ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๋„ฃ์–ด๋„ ๋˜๊ณ , ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ง์ ‘ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, set์„ ํ†ตํ•ด ๊ฐ’์„ ๋Œ€์ž…ํ•ด์ค๋‹ˆ๋‹ค. state๊ฐ’์ด ๋ณ€ํ•˜๊ฒŒ ๋˜๋ฉด UI๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค. useState๋Š” ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค inputํƒœ๊ทธ์˜ ๊ฐ’์„ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด์„œ content๋ผ๋Š” state๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ•˜์˜€๋‹ค. content์„ ์–ธํ•  ๋•Œ๋Š” "" ๋นˆ๋ฌธ์ž์—ด๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด..

Front-End/React 2023.06.06

React] Hook : props

Props properties์˜ ์ค„์ž„๋ง๋กœ, Component๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ๊ฐ’์ž…๋‹ˆ๋‹ค. (HTML์—์„œ์˜ attribute์™€ ๊ฐ™์Œ) Component๋ผ๋ฆฌ (๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ → ์ž์‹ ์ปดํฌ๋„ŒํŠธ) ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ถ€๋ชจ์—์„œ๋งŒ props์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž์‹์—์„œ ๊ฐ’์„ ๋ถ€๋ชจ๋กœ ๋„˜๊ฒจ ๋ถ€๋ชจ์—์„œ์˜ ๊ฐ’๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ๊ฐ’ ์ „๋‹ฌ Title ์ปดํฌ๋„ŒํŠธ HelloWorld์—์„œ language๋ฅผ kor๋กœ ํ•˜์—ฌ Title์ปดํฌ๋„ŒํŠธ์— props๋กœ ๋„˜๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Title2 ์ปดํฌ๋„ŒํŠธ HelloWorld์—์„œ language์™€ name ๋‘ ๊ฐ€์ง€ props๋ฅผ ์ „๋‹ฌํ•˜์˜€๊ณ , Title2์—์„œ๋Š” ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์œผ๋กœ language(๋ณ€์ˆ˜), name(์ฝœ๋ฐฑํ•จ์ˆ˜) ๊ฐ’..

Front-End/React 2023.06.06

React] Import & export

Import Reactํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ์„ ํ•„์š”ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ปดํฌ๋„ŒํŠธ, css ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. import ์‹๋ณ„์ž(๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค) from ๊ฒฝ๋กœ(ex ”./Page”) import React from "react"; import Page003, { Page001, Page002, ErrorPage } from "./MultiPage"; export default function App() { return ( ); } export ๊ฐœ๋ฐœํ•œ ๋ชจ๋“ˆ์„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ชจ๋“ˆ์—์„œ export ํ•ด์•ผ ๋‹ค๋ฅธ ๊ณณ์—์„œ import ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. export ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ์ปจ๋ฒค์…˜ ์ง„ํ–‰ํ•  ๋•Œ..

Front-End/React 2023.06.06

React] Component & JSX

Component ํ™”๋ฉด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ๋•Œ, ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ํ•œ ๋ฒˆ์— ๊ทธ๋ฆฌ๊ฒŒ ๋˜๋ฉด, ํ•˜๋‚˜์˜ ์†Œ์ŠคํŒŒ์ผ์— ๋งŽ์€ ์–‘์˜ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด UI๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์Šค๋ฅผ ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ Component(์ปดํฌ๋„ŒํŠธ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Component๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฒ”์œ„๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ, ๋ฒ„ํŠผํ•˜๋‚˜๊นŒ์ง€๋„ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ๋Šฅ๋ ฅ์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚˜๋ˆˆ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Component๋ฅผ ๋ชจ์•„ ํ•œ ๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. React์—์„œ ์ œ๊ณตํ•˜๋Š” Component ๋ฐฉ์‹์ดClass Component์™€ Function Component 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์ง€๋งŒ, ์ฃผ๋กœ Function Component๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, Class Compon..

Front-End/React 2023.06.04

npm & yarn & package.json

JS๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ธ ๋…ธ๋“œ(Node.js)์˜ ํŒจํ‚ค์ง€(npm์— ์—…๋กœ๋“œ๋œ Node module) ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์šด๋กœ๋“œ, ์„ค์น˜ ์—…๋ฐ์ดํŠธ, ์˜์กด์„ฑ ๋“ฑ ๋ณต์žกํ•œ ์ƒํ™ฉ์ด ์ƒ๊ธฐ๊ธฐ ๋งˆ๋ จ์ธ๋ฐ, ์ž๋™ํ™”ํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. npm Node Package Manager๋กœ Node.js์˜ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋…ธ๋“œ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ์—…๋กœ๋“œํ•˜๋ฉฐ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์œผ๋กœ ๋ˆ„๊ตฌ๋‚˜ ๊ฒŒ์‹œ๋œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://www.npmjs.com/ yarn ํŽ˜์ด์Šค๋ถ์—์„œ ๊ฐœ๋ฐœํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. npm๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋‚˜ ์†๋„๋‚˜ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ ํ–ฅ์ƒ๋˜์–ด npm์—์„œ ๋ณด์™„๋œ ํŒจํ‚ค์ง€๊ด€๋ฆฌ์ž๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://classic.yarnpkg..

Front-End 2023.06.04

React] React ๋ž€...?

React ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. (์ตœ๊ทผ์—๋Š” ์ฃผ๋กœ TypeScript๋กœ ๊ตฌํ˜„) Web์—๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋ชจ๋ฐ”์ผ์—์„œ๋Š” React Navive, ๊ฐ€์ƒ App์—์„œ๋Š” React 360 ๋“ฑ์ด ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ DOM์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ, ํŠน์ • DOM์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํ™”๋ฉด์„ ๊ทธ๋ฆผ์œผ๋กœ์จ, ์—…๋ฐ์ดํŠธํ•  ๋•Œ ๋ณต์žกํ•œ ๋กœ์ง ๋“ฑ ๊ณ ๋ฏผํ•  ๊ฒƒ์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํ™”๋ฉด์€ ์ „๋ถ€ ์ƒˆ๋กœ ๊ทธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋Š๋ฆด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ DOM (Virual DOM)์„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ DOM ์‹ค์ œ ๋ณด์ด๋Š” DOM์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€์ƒ์œผ๋กœ ์กด์žฌํ•˜๋Š” DOM์œผ๋กœ JS๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ €๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค...

Front-End/React 2023.06.04
728x90
๋ฐ˜์‘ํ˜•