[week_09] React ๋ฌธ๋ฒ• | React-Router-Dom v6, useReducer, useContext

    1. React-Router-Dom ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ v6 1-1. Routes, element Router โžก Routes โžก Route ๊ตฌ์กฐ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , element props๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ Œ๋”๋งํ•  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; function App() { return ( ); } 1-2. useNavigate ํŠน์ • ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•  ๋•Œ๋Š” useNavigate ํ›…์„ ์‚ฌ์šฉํ•œ๋‹ค. const navigate = useNavigate() navigate("/login") navigate("/login", {replace: true}) 1-3. path="*" SPA ๋ผ์šฐํŒ…์— ๊ฑธ๋Ÿฌ์ง€์ง€ ์•Š๋Š” ๋งํฌ..

    [week_09] React ์ƒํƒœ ๊ด€๋ฆฌ

    1. ์ƒํƒœ ๊ด€๋ฆฌ ์•ฑ ์ƒ์—์„œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์— ์ €์žฅํ•˜๊ณ  ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ ํ•œ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ์˜ ์ƒํƒœ, ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ƒํƒœ, ์ „์ฒด ์•ฑ์˜ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋ชจ๋‘ ํฌํ•จ 1-1. MPA์™€ SPA์—์„œ์˜ ์ƒํƒœ ๊ด€๋ฆฌ MPA: ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋ง โžก ํด๋ผ์ด์–ธํŠธ ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํฐ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค. SPA: ์ž์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ , ์„œ๋ฒ„์™€์˜ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ฒ˜๋ฆฌ. ๊ทธ ์™ธ์˜ ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ๋งŒ์˜ ๋ฐ์ดํ„ฐ๋กœ ์œ ์ง€. 1-2. ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ์ˆ ์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ๋“ค 1) ๋ฐ์ดํ„ฐ ์บ์‹ฑ๊ณผ ์žฌํ™œ์šฉ SPA์—์„œ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๋งˆ๋‹ค ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•œ๋‹ค๋ฉด, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด์—์„œ MPA๋ฅผ ํฌ๊ฒŒ ๋„˜์–ด์„œ๊ธฐ ํž˜๋“ค๋‹ค. ๋ณ€๊ฒฝ์ด ์žฆ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๊ณ  ์žฌํ™œ..

    [week_08] React ๊ธฐ์ดˆ โ…ก(2) Hooks

    1. Hook Hook์€ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ(State)ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ƒํ˜ธ์ž‘์šฉ(Effect)์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์•ž์„œ ํ•™์Šตํ•œ useState๊ฐ€ ๋ฐ”๋กœ State Hook์ด๋‹ค. Hook์€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ(Class Component)๋ฅผ ๋ณด์™„ํ•˜๊ณ , ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด React 16.8 ๋ฒ„์ „์—์„œ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. โœจ Hook ์œ ์˜์‚ฌํ•ญ 1) Hook์€ Reactํ•จ์ˆ˜(์ปดํฌ๋„ŒํŠธ, Hook) ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. 2) Hook์˜ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ 'use'๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. 3) ์ตœ์ƒ์œ„ Level์—์„œ๋งŒ Hook์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ Hook์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์ฒซ๋ฒˆ์งธ ์ค‘๊ด„ํ˜ธ({ }) ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. (๐Ÿ‘‰ if๋ฌธ, for๋ฌธ ์•ˆ์ชฝ ๋˜๋Š” ..

    [week_08] React ๊ธฐ์ดˆ โ…ก (1) ์ด๋ฒคํŠธ

    1. ์ด๋ฒคํŠธ(event) ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ๋ ค์ฃผ๋Š” HTML ์š”์†Œ์— ๋Œ€ํ•œ ์‚ฌ๊ฑด์˜ ๋ฐœ์ƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์œ ์ €์˜ ํ–‰๋™์— ์˜ํ•ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•œ ๋กœ์ง์— ์˜ํ•ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐœ์ƒ๋œ ์ด๋ฒคํŠธ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถ”๋ ฅํ•ด์„œ ์•Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. 1-1. ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ(ํ•ธ๋“ค๋ง) ๋ฐฉ๋ฒ• const App = () => { const handleChange = (event) => { console.log("์ž…๋ ฅ๊ฐ’ : " + event.target.value); } return ( ); }; DOM Element์˜ ๊ฒฝ์šฐ, ํ•ธ๋“ค๋ง ํ•จ์ˆ˜์— ์ด๋ฒคํŠธ object๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์ด๋ฒคํŠธ object๋ฅผ ํ™œ์šฉํ•ด์„œ ์ด๋ฒค..

    [week_08] React ๊ธฐ์ดˆ โ… (4) React ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

    1. Create React App (CRA) React ํ”„๋กœ์ ํŠธ๋ฅผ ์†์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ(Boilerplate) Facebook์—์„œ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์„ Command๋กœ ์ œ๊ณตํ•œ๋‹ค. 1-1. Create React App (CRA)์˜ ์žฅ์  1) ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜จ์ „ํžˆ React App ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ์ค‘์š”ํ•œ ์ฝ”๋“œ๋Š” ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ•๋ ฅํ•œ Command๋ฅผ ์ง€์›ํ•œ๋‹ค. 2) (๋Œ€๋ถ€๋ถ„์˜) ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด์„๋  ์ˆ˜ ์žˆ๋„๋ก transcompile ์ง€์› Babel ๊ธฐ๋ณธ ๋‚ด์žฅ ๋ฐฐํฌ ์‹œ ์ฝ”๋“œ ๋ฒˆ๋“ค๋ง Webpack ๊ธฐ๋ณธ ๋‚ด์žฅ 2. Node.js / NPM ์†Œ๊ฐœ Create React App์œผ๋กœ React ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ No..

    [week_08] React ๊ธฐ์ดˆ โ… (3) Props์™€ State

    1. Props ๊ธฐ๋ณธ์ ์œผ๋กœ Component์— ์›ํ•˜๋Š” ๊ฐ’์„ ๋„˜๊ฒจ์ค„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ JavaScript์˜ ์š”์†Œ๋ผ๋ฉด ์ œํ•œ์ด ์—†๋‹ค. ์ฃผ๋กœ Component์˜ ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. /* 1. ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ */ const Welcome = (props) => { return Hello, {props.name} } /* 2. ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ */ const App = () => { return ; } Props๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค. ๋”ฐ๋ผ์„œ, Props ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Props์˜ ๊ฐ’์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ•ด๋‹น ๊ฐ’์„ ๋ณต์ œํ•œ ๋’ค ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. 1-1. DOM Element์˜ Attributes ..

    [week_08] React ๊ธฐ์ดˆ โ… (2) JSX์™€ ์ปดํฌ๋„ŒํŠธ

    1. JSX ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ฌธ๋ฒ•์  ํŽธ์˜๋ฅผ ์ œ๊ณตํ•˜๋Š” JavaScript์˜ ํ™•์žฅ HTML๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์œผ๋‚˜ JavaScript์ด๊ณ , HTML๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. JSX๋Š” Babel์— ์˜ํ•ด์„œ Transcompile ๋œ๋‹ค. 1-1. JSX์˜ ์žฅ์  1) ๊ฐœ๋ฐœ์ž ํŽธ์˜์„ฑ ํ–ฅ์ƒ 2) ํ˜‘์—…์— ์šฉ์ด / ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ 3) ๋ฌธ๋ฒ• ์˜ค๋ฅ˜์™€ ์ฝ”๋“œ๋Ÿ‰ ๊ฐ์†Œ 1-2. JSX์˜ ํŠน์ง• (HTML๊ณผ ์ฐจ์ด์ ) 1) HTML ํƒœ๊ทธ ๋‚ด์— JavaScript ์—ฐ์‚ฐ const App = () => { const a = 3; const b = 6; return {a} + {b} = {a+b} } 2) class โžก className ( {name}๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”. ) 3) ์Šคํƒ€์ผ์€ object๋กœ ์ž‘์„ฑ ( {name}๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”. )..

    [week_08] React ๊ธฐ์ดˆ โ… (1) OT

    1. SPA (Single Page Application) ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์ตœ์ดˆ ์ ‘์† ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML์„ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค. ๊ทธ ํ›„ ํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ JSON์œผ๋กœ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค. ์ด ๋•Œ, ํŽ˜์ด์ง€์—์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๊ณ„์‚ฐํ•˜์—ฌ ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. (์ „ํ†ต์ ์ธ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ, ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค HTML์„ ์ƒˆ๋กœ ๋ฐ›์•„์„œ ํŽ˜์ด์ง€๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๊ทธ๋ฆผ) ๐Ÿ‘‰ React๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋Ÿฌํ•œ ํ–‰์œ„๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค! 2. React ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Component : React์˜ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„ Virtual DOM : ๊ฐ€์ƒ์ ์ธ ํ‘œํ˜„์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ReactDOM๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ•ด ์‹ค์ œ DOM๊ณผ ๋™๊ธฐํ™”ํ•˜๋Š” ํ”„๋กœ..