[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๋ฅผ ํฌ๊ฒ ๋์ด์๊ธฐ ํ๋ค๋ค. ๋ณ๊ฒฝ์ด ์ฆ์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๊ณ ์ฌํ..
[BE] Passport.js๋ฅผ ํ์ฉํ ๊ฐ๋จํ ํ์์ธ์ฆ ๊ตฌํ
1. ํ์ํ ๋ชจ๋ ์ค์น npm install express passport passport-local express-session mongoose passport, passport-local : ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ ์ธ์ ๊ด๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๋ชจ๋ express-session : ์ธ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ 2. app.js ๊ธฐ๋ณธ ์ธํ const express = require("express"); const app = express(); const passport = require("passport"); var Strategy = require("passport-local"); const session = require("express-session"); const mongoose = require("mongoose")..
[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๋ฅผ ํ์ฉํด์ ์ด๋ฒค..
[CS] AJAX
1. AJAX๋? Asynchronous Javascript And XML ๋น๋๊ธฐ์ ์ผ๋ก JS๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์, ๋์ ์ผ๋ก DOM์ ๊ฐฑ์ ๋ฐ ์กฐ์ํ๋ ์น ๊ฐ๋ฐ ๊ธฐ๋ฒ 2. ์ด๋ป๊ฒ ๋์ํ๋๊ฐ? ์ฌ์ฉ์๊ฐ AJAX๊ฐ ์ ์ฉ๋ UI์ ์ํธ์์ฉํ๋ฉด, ์๋ฒ์ AJAX ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค. ์๋ฒ๋ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ JS ํ์ผ์ ์ ์๋์ด ์๋ ๋๋ก HTML/CSS์ ๋ฐ์ดํฐ๋ฅผ ์ตํฉํ์ฌ ๋ง๋ DOM ๊ฐ์ฒด๋ฅผ UI์ ์ ๋ฐ์ดํธ ์ํจ๋ค. ๋น๋๊ธฐ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ๊ธฐ์กด์ ํ์ด์ง๋ฅผ ์ ๋ถ ๋ก๋ฉํ๋ ๋ฐฉ์์ด ์๋ ์ผ๋ถ๋ง ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ด๋ค. 3. ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฐ? 3-1. XMLHttpRequest ์ผ๋ฐ์ ์ผ๋ก XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ์ธ์คํด์ค์ open(), send() ๋ฑ์ ๋ฉ์๋๋ฅผ ..
[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 ..