๐ useEffectuseEffect()๋ ํ์ด์ง์ ๋ง์ดํธ, ์ธ๋ง์ดํธ, ์
๋ฐ์ดํธ ์ ์์
์ ์ค์ ํ๋ค.์ฉ์ด์ค๋ช
Mount์ปดํฌ๋ํธ๊ฐ ํ์ด์ง์ ๋ํ๋จunMount์ปดํฌ๋ํธ๊ฐ ํ์ด์ง์์ ์ฌ๋ผ์ง ์
๋ฐ์ดํธ๋ useEffect() ํน์ ๊ฐ์ ์์กดํ์ฌ ํด๋น ๊ฐ์ด ๋ณ๊ฒฝ, ์คํ๋๋ฉด ํด๋น useEffect()๋ฅผ ์ฌ์คํํ๋ค. useEffect()์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.useEffect(()=> { // ๋ง์ดํธ ์๋ฃ ํ ์คํํ ์ฝ๋ return () => { // ์ธ๋ง์ดํธ ์๋ฃ ํ ์คํํ ์ฝ๋ }}, [dependencies]) dependencies์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์ธ๋ง์ดํธ๊ฐ ์ผ์ด๋๋ฉด์ return()์ ํตํด ๊ธฐ์กด ์์
์ ํด์ ํ๊ณ ๋ค์ ๋ง์ดํธ ์ํจ๋ค. ๐ป Code๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค..
๐จ๐ป๐ผ useState ํน์ ๊ฐ์ useState()๋ก ์ ์ธํ์ฌ์ ๊ฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํด๋น ๊ฐ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํ๋ฉด์ ๋ฆฌ๋ ๋๋งํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ฌ์ค๋ค. ์ด๋, ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋๋ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ๊ฐ ์๋ค๋ฉด, ์์ ์ปดํฌ๋ํธ ๋ํ ๋ค์ ๋ถ๋ฌ์์ง๋ฉด์ ์์ ์ปดํฌ๋ํธ๊น์ง ๋ฆฌ๋ ๋๋ง ๋ฉ๋๋ค. ๐ป Code ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ , ๋ค์ ํ์ผ์ ๋ง๋ค์ด์ค๋ค. ๐ StateComponent.tsx import React, { useState } from 'react' export function StateComponent(): JSX.Element { const [num, setNum] = useState(0) const onIncrease = () => setNum(num + 1) const onDec..
์์ฑ์ ๊ฐ๋ฐ ํ๊ฒฝ โ
VScode โ
Mac or Windows ๐ ๏ธ ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ (CRA) CRA๋ Create-React-App์ ์ฝ์๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งํ๋ค. ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ช
๋ น ํ๋กฌํํธ(CMD) ํน์ >_ Terminal ์ ์ด์ด์ค๋ค. ๊ทธ ๋ค์ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค. $ npx create-react-app ์ .์ ๋ฃ์ผ๋ฉด ํ์ฌ ๊ฒฝ๋ก์ ๋ฆฌ์กํธ ํ๋ก์ ํธ๊ฐ ์์ฑ๋๊ณ , ์ ๋ฌธ์๋ฅผ ์์ฑํ๋ฉด ํด๋น ๋ฌธ์๋ฅผ ํด๋๋ช
์ผ๋ก ํ๋ ํด๋๋ฅผ ์์ฑํ์ฌ ๊ทธ ์์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. ๋ ํด๋น ํ๋ก์ ํธ์ ์ต์
์ ๋ถ๊ฐํ๋ค. --template typescript๋ฅผ ์์ฑํ๋ฉด ํ์
์คํฌ๋ฆฝํธ์ ํ๋ก์ ํธ๊ฐ ์์ฑ๋๋ค. ์๋ฌด๊ฒ๋ ์์ฑํ์ง ์์ ์ default๋ก JavaScript ํ๋ก์ ํธ๋ฅผ ..
๐ ๋ฆฌ์กํธ ๋ฉํ์์ ๊ฐ๋ฐํ ์คํ ์์ค ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ํ์ด์ง ์ ํ ๋ฐ ์ฌ์ฉ์ UI ๋ถ๋ถ์์ ์๋นํ ๋ถ๋๋ฝ๊ฒ ์๋ํ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. ๋๋ html์ ํจ์, array, object์ ๋ณด๊ดํ์ฌ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ฌ ํฐ ํ๋ก์ ํธ์ผ์๋ก html ๊ด๋ฆฌ๊ฐ ํธํด์ง๋ค. https://ko.legacy.reactjs.org/ React – ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ A JavaScript library for building user interfaces ko.legacy.reactjs.org โฌ๏ธ Install ๋ฆฌ์กํธ ๊ฐ๋ฐ์ ํ๊ธฐ ์ํด์ nodejs๋ฅผ ์ค์นํด์ผํ๋ค. ์ค์น๊ฐ ๋์ด์๋์ง ํ์ธํ๊ธฐ ์ํด์ ๋ช
๋ น ํ๋กฌํํธ(CMD)๋ฅผ ์ด์ด์ ์๋์ ๊ฐ์ด ์์ฑํ๋ค. ..
ํ ํฐ์ ๋ฐ๊ธํ๊ณ ์ธ์ฆ๋ฐ๊ณ , ๊ฒ์ฆํ๋ ค๋๋ฐ ๊ตฌ์กฐ์ ํ๋ก์ธ์ฑ์ ์ดํดํ๋๋ฐ 5์ผ์ด ๊ฑธ๋ฆฐ ๊ฑฐ ๊ฐ๋ค... ๊ฐ๋ฐ๋ ์๋ก ํฐ์คํ ๋ฆฌ์ ๋ด์ฉ ๋ฐ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ฐธ๊ณ ์ฌ์ดํธ - ๊ตฌ๊ธ ๊ฒ์์ผ๋ก "jwt", "token" ์ธ์ฆ ๊ด๋ จ ๊ฒ์์ผ๋ก ๋์จ ๋ด์ฉ ์ ๋ถ ๐ง ์ฌ์ ์ง์const jwt = require('jsonwebtoken'); // // ํ ํฐ ๋ฐ๊ธ ์ฝ๋ // // Data - ํ ํฐ์ ๋ด์ ๋ด์ฉ์ ๋ด์ต๋๋ค. // SecretKey - ์์์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์ ํด์ค๋๋ค. // options - ํ ํฐ์ ์ ํจ๊ธฐ๊ฐ ๋ฐ ์๋ช
์ต์
์ ์ง์ ํ์ต๋๋ค. const token = jwt.sign(Data, SecretKey, signOptions ) // // ํ ํฐ ๊ฒ์ฆ ์ฝ๋ // // token - ๋ฐ๊ธ ๋ฐ์ ํ ํฐ์ ๋ด์ต๋๋ค. /..
์ฐธ๊ณ ์ฌ์ดํธ • https://puleugo.tistory.com/138 ๐ซAccessToken๊ณผ ๐ชชRefreshToken • AccessToken: ์๋ฒ API๋ฅผ ์ง์ ์์ฒญํ ๋ ์ฌ์ฉํ๋ค. • RefreshToken: ์ก์ธ์ค ํ ํฐ์ด ๋ง๋ฃ๋์์ ๋ ์ก์ธ์ค ํ ํฐ์ ์ฌ๋ฐ๊ธํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค. ๐ง๐ปโค๏ธ๐ฉ๐ป๋ถ๋ฆฌ ๋ชฉ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ API ํต์ ์ค, ํ ํฐ์ด ํด์ปค์๊ฒ ์ ์ถ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์, ์ง์ API๋ฅผ ํธ์ถํ๋ ์ก์ธ์ค ํ ํฐ์ ์ฃผ๊ธฐ๋ ์งง๊ฒ ์ค์ ํ๊ณ (์ฝ 1์๊ฐ) ์ก์ธ์ค ํ ํฐ์ ์ฌ๋ฐ๊ธํ๋ ๋ฆฌํ๋ ์ ํ ํฐ์ ์ฃผ๊ธฐ๋ ๋น๊ต์ ๊ธธ๊ฒ ์ค์ ํ๋ค. (์ฝ 2์ฃผ) ์ด๋ ๊ฒ ๋๋ค๋ฉด ์ก์ธ์ค ํ ํฐ์ด ์ ์ถ๋๋๋ผ๋ ๋ง๋ฃ ์ฃผ๊ธฐ๊ฐ ์งง์ ํผํด๋ฅผ ์กฐ๊ธ์ด๋๋ง ์ค์ผ ์ ์๋ค. ๐ป ๊ฐ๋ฐ ์ก์ธ์ค/๋ฆฌํ๋ ์ ํ ํฐ ๋ฐฉ์์ ์ค๊ฐ์ ํ์ทจ ๋น..
์ฐธ๊ณ ์ฌ์ดํธ • https://velopert.com/2389 ๐ผ ๊ตฌ์กฐ jwt๋ ' . ' ์ ๊ตฌ๋ถ์๋ก 3๊ฐ์ง ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๐ท๐ปโ๏ธ Header Header๋ ๋๊ฐ์ง์ ์ ๋ณด๋ฅผ ์ง๋๊ณ ์๋ค. • typ: ํ ํฐ์ ํ์
์ ์ง์ ํ๋ค. ์ฆ, jwt • alg: ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํ๋ค. ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋ณดํต HMAC SHA256 ํน์ RSA๊ฐ ์ฌ์ฉ๋๋ฉฐ, ์ด ์๊ณ ๋ฆฌ์ฆ์ ํ ํฐ์ ๊ฒ์ฆํ ๋ ์ฌ์ฉ๋๋ signature๋ถ๋ถ์์ ์ฌ์ฉ๋๋ค. { "typ": "JWT", "alg": "HS256" } ๋ค์์ base64๋ก ์ธ์ฝ๋ฉ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. const header = { typ: 'JWT', alg: 'HS256', }; const encodedHeader = new Buffer(JS..
์ฐธ๊ณ ์ฌ์ดํธhxyxneee.log๋์ ๋ฒจ๋ก๊ทธ์ฐ๋ฆฌ๋ ๋ณธ์ธ์ ์ธ์ฆํ ๋, ์ค์ํ ์ ๋ณด๋ค์ ๋ด์๋ณด๋ธ๋ค.์์ด๋, ๋น๋ฐ๋ฒํธ, ๊ฐ์ธ์ ๋ณด(์ด๋ฆ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ํธ๋ํฐ ๋ฒํธ) ๋ฑ...๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ ์ถ์ด ๋๋๋ผ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋น๋ฐ์ค๋ฝ๊ฒ ๋ฐ๊พธ์ด ํด์ปค๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํ์
ํ์ง ๋ชปํ๋๋กํด์ผ ์กฐ๊ธ์ด๋๋ง ๋ ์์ ํ ์ ์๊ธฐ์ ์ํธํ๊ฐ ํ์ํ๋ค. ๐ ์ํธํ์ํธํ๋, ํน์ ์ง์์ ์์ ํ๊ณ ์๋ ์ฌ๋๋ค์ ์ ์ธํ๊ณ ๋ ๋๊ตฌ๋ ์ง ์ฝ์ด๋ณผ ์ ์๋๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ณผ์ ์ด๋ค.๋ฐ๋๋ก ์ํธ๋ฌธ์ ํ๋ฌธ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋ณตํธํ๋ผ๊ณ ํ๋ค. โ ๏ธ ์ํธํ์ ํ์์ฑ์ ์ ์ ๋น๋ฐ๋ฒํธ๋ ๊ทธ๋๋ก DATABASE์ ์ ์ฅํ์ง ์๋๋ค.โ DB๊ฐ ํดํน ๋นํ๋ฉด ์ ์ ์ ๋น๋ฐ๋ฒํธ๊ฐ ๊ทธ๋๋ก ๋
ธ์ถ๋๋ค.โ ์ธ๋ถ ํดํน์ด ์๋๋๋ผ๋ ๋ด๋ถ ๊ฐ๋ฐ์๊ฐ DB์ ์ ๊ทผํด ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ณผ..