- ๐๋ฐฐํฌURL
- ๐์๋น์ค ์ด์ฉ์ ์ํ ํ
์คํธ ๊ณ์ (ํ์ง๋ง ํ์๊ฐ์
๊ธฐ๋ฅ๋ ๋์ํ๋ต๋๋ค!)
id : test4321@test.com
pw : test123!
๋ชฉ์ฐจ
ํ ์ผ์ ์์๊ณ ๋ฌด์๋ถํฐ ์ผ์ ํด์น์์ผ ํ ์ง ์ ์ ์์ ๋, ํ๊ฐ์ง ์ผ์ ์๊ฐ์ ์๋ฉ ๋นผ์๊ฒจ ๊ณํํ ์ผ๋ค์ ํ์ง ๋ชปํ๋ ์ ์ด ์๋์?
ํ๋ฃจ๋ฅผ ์์นจ, ์ ์ฌ, ์ ๋
์ผ๋ก ๋๋์ด ํ ์ผ์ ๋ถ๋ฐฐํด ๋ณด์ธ์
์์นจ์๋ ์์นจ์ ํ ์ผ์ ์ง์คํฉ๋๋ค
์ ์ฌ์๋ ๋ฏธ๋ จ์์ด ์ ์ฌ์ ํ ์ผ์, ์ ๋
์๋ ์ ๋
์ ํ ์ผ์ ์คํํฉ๋๋ค
์ ๊ณต๋ API ์ฌ์ฉ
-
๐ Notion
-
๐ Convention
- ๐ Figma
npm install
npm start
bandicam.2023-07-17.15-38-21-859.mp4
๐ฆsrc
โฃ ๐API
โ โ ๐customAxios.ts
โฃ ๐assets
โ โ ๐images
โ โ โฃ ๐loadingSpinner.gif
โ โ โ ๐logout.svg
โฃ ๐Component
โ โฃ ๐AuthForm
โ โ โ ๐AuthForm.tsx
โ โฃ ๐Button
โ โ โ ๐Button.tsx
โ โฃ ๐PostItem
โ โ โ ๐PostItem.tsx
โ โ ๐SelectInputBox
โ โ โ ๐SelectInputBox.tsx
โฃ ๐Pages
โ โฃ ๐category
โ โ โ ๐Category.tsx
โ โฃ ๐context
โ โ โ ๐UserContext.ts
โ โฃ ๐Loading
โ โ โ ๐Loading.tsx
โ โฃ ๐NotFound
โ โ โ ๐NotFound.tsx
โ โฃ ๐SignIn
โ โ โ ๐Signin.tsx
โ โฃ ๐SignUp
โ โ โ ๐Signup.tsx
โ โฃ ๐Splash
โ โ โ ๐Splash.tsx
โ โ ๐Todo
โ โ โ ๐Todo.tsx
โฃ ๐Router
โ โ ๐Router.tsx
โฃ ๐utils
โ โ ๐baseUrl.ts
โฃ ๐App.tsx
โฃ ๐custom.d.ts
โฃ ๐index.css
โ ๐index.tsx
- ์นดํ ๊ณ ๋ฆฌ ํ์ด์ง์์ ํ ์ผ ์์ API ๋ฅผ ํธ์ถํ๋ฉด ์ํ๊ฐ ๋ฐ๋ก ๋ฐ์์ด ๋๋๋ฐ, Category ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด ๋ค์ ์์ ๊ฐ์ผ๋ก ๋ ๋๋ง๋๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์ฆ, ์์ ๋ ๋ด์ฉ์ด Category ํ์ด์ง์์ ์๋ก๊ณ ์นจํ๋ฉด ๋ฐ์์ด ์๋์๋ค.
[ํด๊ฒฐ๊ณผ์ ] ๐ ๊นํ๋ธ pr ๋งํฌ
- ๊ธฐ์กด์๋ useNavigate๋ก Todo ์ปดํฌ๋ํธ์์ Category ์ปดํฌ๋ํธ๋ก todolist state ๋ฅผ ์ ๋ฌํด์คฌ์๋ค. ์์นจ,์ ์ฌ,์ ๋ ๋ฒํผ์ ๋๋ฌ์ผ์ง๋ง state๊ฐ ๋์ด์ค๋๋ฐ ๋ฒํผ์ ๋๋ฅด์ง ์๊ณ , ์๋ก๊ณ ์นจ์ ํ๊ฒ๋๋ฉด useNavigate ์ ์๋ state ๊ฐ์ด ๋ฐ์์์ง์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ ๋ ๋๋ง ๋์ง ์๋ ๊ฒ์ด์๋ค.
- ๋ฐ๋ผ์, useNavigate ๋ก ์ํ๊ฐ์ ์ ๋ฌํ์ง ์๊ณ Category ์ปดํฌ๋ํธ์์ get API ๋ฅผ ์ฌ ํธ์ถํด์ ๋ค์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ ์ค๊ฒ ํ๋ค.
- ํ์ง๋ง, ์ด ๋ฐฉ๋ฒ์ ์์ ์ฌํญ์ด ์๊ธธ ๋๋ง๋ค get API ๋ฅผ ํธ์ถํ๊ธฐ์ ์๋ฒ ๋ฐ์ ๋น์ฉ์ด ์ฆ๊ฐํ๋ค. ๋๋ถ์ด, Todo ์ปดํฌ๋ํธ์ todolist ์ Category ํ์ด์ง์ categoryTodolist state๊ฐ ์๋ก ์ํฅ์ ๋ฏธ์น๋ ๋ฐ์ดํฐ์ธ๋ฐ ๋ค๋ฅธ state๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ํ๊ด๋ฆฌ์ ์ด๋ ค์์ด ์์ด, ์ถํ ์ ์ญ์ํ๊ด๋ฆฌ๋ก ๋ฆฌํฉํ ๋ง ํ ์์ ์ด๋ค.
- ๋ก๊ทธ์ธ ์ ๋ณด์ ๋ฐ๋ฅธ ํ์ด์ง ์ ๊ทผ์ ํ์ token ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ค
[ํด๊ฒฐ๊ณผ์ ] ๐ ๊นํ๋ธ pr ๋งํฌ
- ๊ธฐ์กด์ Context ์ value ๊ฐ์ localStorage ๊ฐ๋ง ๋ฃ์๋ค. ์ฆ, ๋์ ์ผ๋ก ํ ํฐ์ด ์์๋, ์์ ๋๋ฅผ ๋ฆฌ์กํธ๊ฐ ๊ฐ์งํ์ง ๋ชปํ๋ค.
- ๋ฐ๋ผ์, ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๊ฐ์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ setState ๋ฅผ ์ ๋ฐ์ดํธํ๋ค.
- context provider ๋ฅผ ์ฌ์ฉํด setState๋ฅผ props๋ก ๋ด๋ ค์ฃผ๊ณ ๋ก๊ทธ์ธ์์ localStorage์ ์๋ token ์ ๋ณด๋ฅผ useState ์ด์ฉํด ์ ์ฅํ๋ค
- access_token ์ด ์กด์ฌํ ๋ /todoํ์ด์ง๋ก ์ด๋ํ๋๋ก Router์ค์ ์ ํ๊ธฐ์ ๋ฐ๋ก todo๋ฆฌ์คํธ๊ฐ ๋ ๋๋ง๋ ๊ฒ์ผ๋ก ์์ํ์๋ค. ํ์ง๋ง, ํ ํฐ ์ฌ๋ถ ํ์ธ์ด ์๋ฃ๋๊ธฐ ์ ์๋ ํ ํฐ์ด null ์ธ ์ํ์ด๋ฏ๋ก NotFound ํ์ด์ง๊ฐ ๋ ๋๋ง๋์๋ค
[ํด๊ฒฐ๊ณผ์ ] ๐ ๊นํ๋ธ commit ๋งํฌ
- ๊ธฐ์กด์๋ Router์์ token์ ์ฌ๋ถ๋ง ํ์ธํ๊ธฐ์ token์ด ์๋ ์๊ฐ ์ผ์์ ์ผ๋ก NotFound ํ์ด์ง๊ฐ ๋ ๋๋ง ๋์๋ค. token๊ฐ์ด ๋ค์ด์ค๊ธฐ ์ ์ ๋ก๋ฉ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค์ผ๋ก์จ UX๋ฅผ ๊ฐ์ ํ๋ค.
- useState๋ฅผ ์ฌ์ฉํด ๋ก๋ฉ์ํ๋ฅผ ๊ด๋ฆฌ, ํ ํฐ ์ฌ๋ถ ํ์ธ ํ setState๋ฅผ ๋ณ๊ฒฝํด ์ค ํ Context Provider๋ก setState๋ฅผ props๋ก ๋ด๋ ค์ฃผ์ด ๋ก๋ฉ ์ํ์ ๋ฐ๋ผ ๋ก๋ฉ ํ์ด์ง๋ฅผ ๋ ๋๋งํ์๋ค.