๐ Front-End/React.js
ํฌ์คํ
์ฃผ ๋ด์ฉ์ ์ ์ญ ์คํ์ผ(Global), ํ
๋ง(theme), ํ์
์คํฌ๋ฆฝํธ ์ ์ฉ์ ํฌ์ปค์ค๋ฅผ ๋ง์ถ๊ฒ ์ต๋๋ค. react ๋ฅผ ์ฌ์ฉํด๋ณธ์ ์ด ์๊ฑฐ๋, ์คํ์ผ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด๋ณด์ ์ ์ด ์์ผ์ ๋ถ๋ค์ ์๋ ์ฝ๋ ์์๋ง ๋ณด๊ณ ์ถฉ๋ถํ ๊ฐ์ ์ก์ผ์ค ์ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐ ํฉ๋๋ค. โ ํ๊ฒฝ ์ธํ
// ์คํ์ผ ์ปดํฌ๋ํธ ์ค์น yarn add styled-components // ํ์
์คํฌ๋ฆฝํธ ์ ์ฉ yarn add --dev @types/styled-components โ styled.d.ts import 'styled-components'; declare module 'styled-components' { export interface DefaultTheme { TitleFont : { fontSize : any; fontF..
๐ Front-End/React.js
stale ๋ํ์ฌ ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์๋ ๋ฐ์ดํฐ๋ฅผ staleํ ์ํ๋ก ์ฌ๊น๋๋ค. stale์ด๋ ์ต์ ํ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ผ๋ ์๋ฏธ๋ก staleํ ์ํ๊ฐ ๋๋ฉด ๋ค์์ ๊ฒฝ์ฐ์ refetch ๋ฉ๋๋ค. ์๋ก์ด query ์ธ์คํด์ค๊ฐ ๋ง์ดํธ๋ ๋( useQuery๊ฐ ์ฒ์ ํธ์ถ๋ ๋ ) ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ์ดํํ๋ค๊ฐ ๋ค์ ํฌ์ปค์คํ ๋ ๋คํธ์ํฌ๊ฐ ๋ค์ ์ฐ๊ฒฐ๋ ๋ ํน๋ณํ ์ค์ ํ refetch interval์ ์ํด์ (refetchInterval) refetchOnWindowFocus ์ต์
๋ฑ์ผ๋ก ๊ธฐ๋ณธ refetch ์ค์ ์ ๋ง์ ์ ์๊ณ staleTime ์ต์
์ผ๋ก ์ค์ ํ ์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ stale ๋์ง ์๋๋ก ํด refetch๋ฅผ ๋ง์ ์๋ ์์ต๋๋ค. query์ ๋ณ๋ค๋ฅธ action์ด ์์ผ๋ฉด inactive ์ํ๋ก ..
๐ Front-End/React.js
์ค์น yarn add react-router-dom โ createBrowserRouter() const router = createBrowserRouter([๊ฐ ๊ฒฝ๋ก์ ๋ฐฐ์ด]) App.js import React from 'react'; import { createBrowserRouter, RouterProvider } from 'react-router-dom'; const router = createBrowserRouter([]); export default function App() { return } ์์ ๊ฐ์ด ์์ ์ปดํฌ๋ํธ์ ์ธํ
์ ํด์ค๋๋ค. ์ปดํฌ๋ํธ ๊ฒฝ๋ก์ ์ถ๊ฐํ๊ธฐ import React from 'react'; import { createBrowserRouter, RouterProvider ..
๐ Front-End/Next.js
[slug] ๊ฐ์ ์ด๋ป๊ฒ ํ์ฉํ ๊ฒ ์ธ๊ฐ? - pages/category/[slug].js slug ๊ฐ์ ๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ํ์ด์ง๊ฐ ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ ธ์ผ ํฉ๋๋ค. 1. useRouter Next.js ์์ ์ ๊ณตํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ import { useRouter } from 'next/router' // ์ ์ธ const router = useRouter(); const { slug } = router.query; 1.1 category.js import { useRouter } from "next/router"; const CategorySlug = () => { const router = useRouter() const { slug } = router.query return ( Category {slu..
๐ Front-End/Next.js
1. Assets 1.1 public ๋๋ ํ ๋ฆฌ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ ์ต์์ ๋๋ ํ ๋ฆฌ์ public ๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ public ํด๋๊ฐ / ๋ก ๋งค์นญ ๋ฉ๋๋ค. 1.2 ์ต์ ํ ๋์ง ์์ ์ด๋ฏธ์ง ๊ทธ๋ฌ๋, ์ผ๋ฐ HTML ์ img ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ ์ํฉ๋ค์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ด๋ฏธ์ง๊ฐ ๋ฐ์ํ์ผ๋ก ์ ์ฉ๋๋์ง ๋ค๋ฅธ ํด ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ฏธ์ง ์ต์ ํ ๋ทฐํฌํธ์ ๋ค์ด๊ฐ ๋๋ง ์ด๋ฏธ์ง ๋ก๋ ๋ฑ ... ํ์ง๋ง, Next.js ๋ Image ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฆ์ ์ฌ์ฉ ํ ์ ์๋ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ณต ํฉ๋๋ค. 1.3 Image Component - ์ด๋ฏธ์ง ์๋ ์ต์ ํ Next.js ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฏธ์ง ์ต์ ํ๋ ์ง์ ํฉ๋๋ค. ์ด๋ฏธ์ง ํฌ๊ธฐ ์กฐ์ , ์ต์ ํ์ ์ต์ ์ด๋ฏธ์ง ํฌ๋ฉง (..
๐ Front-End/Next.js
Next.js ์์๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ํ์ด์ง ์ด๋ํ๋ ๊ฒ์ ๋ฐ๊ฐ์ ํ์ง ์์ต๋๋ค. ์ด์ ๋, ์ฑ ๋ด์์ ํ์ด์ง๋ฅผ ์ด๋ ํ ๋ ์ฌ์ฉํ๋ ํน์ ์ปดํฌ๋ํธ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ ์
๋๋ค. React ์์ React router link ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ ๊ฐ์ต๋๋ค. ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ํ์ด์ง๋ฅผ ์ด๋ํ๊ฒ ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ก๊ณ ์นจ์ด ๋ฐ์ ํฉ๋๋ค. Link ํ์ด์ง๊ฐ์ ํ์์ CSR์ผ๋ก ์งํ ํ ์ ์์ต๋๋ค. Code Splitting์ด ํ์ด์ง ๋ณ๋ก ์งํ ๋์ด ๊ฐ ํ์ด์ง์์ ํ์ํ ๊ฒ๋ง ๋ก๋ํ ์ ์๋๋ก ํฉ๋๋ค. ํน์ ํ์ด์ง์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋๋จธ์ง ์ฑ์ ์ ์ ์๋ ํฉ๋๋ค. ๋ผ์ฐํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. next/link ๊ฐ์ฅ ๋จผ์ import ๋ฅผ ํฉ๋๋ค. ๋ณ๋์ ์ค์น๋ ํ์ํ์ง ์์ต๋๋ค. import Link ..
๐ Front-End/Next.js
Next.js ์ Router ๋ file-system ๊ธฐ๋ฐ file-system : ํ์ผ์ ๋ง๋ค๋ฉด ๊ทธ ์ฆ์ ๋ผ์ฐํฐ๋ก ์ธ์ง๋๊ณ ์ฃผ์๊ฐ ๋งตํ์ด ๋ฉ๋๋ค. pages/ src/pages/ ๋ฆฌ์กํธ์์๋ ๋ณ๋์ Router ๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง, Next.js ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต์ ํฉ๋๋ค. pages/ OR src/pages ๋ ์ค ์ฐ์ ์์๋? ์ฐ์ ์์๋ pages/ ๊ฐ ์ฐ์ ์
๋๋ค. pages/index.js import Link from 'next/link' import { useEffect, useState } from 'react' export async function getStaticProps(){ console.log('server') return { props..
๐ Front-End/Next.js
1. React.js ์ ๋ฐฉ์ 1.1 ๊ธฐ์กด์ React ๋ CSR ๋ฐฉ์์ผ๋ก ํ๋ฉด์ ๋ ๋๋ง ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ธก์์ ํ๋ฉด์ ์ง์ ๋ ๋๋ง ํฉ๋๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ ๊ฐ ๋ณด๋ UI ๋ฅผ ๋ง๋ญ๋๋ค. React ๋ก ๋ง๋ค์ด์ง ํ๋ฉด์ ๋ชจ๋ ๊ฒ์ HTML ์์ค์ฝ๋ ์์ ๋ค์ด์์ง ์์ต๋๋ค. React ๋ก ๋ง๋ค์ด์ง ์ฑ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก ํ์ธํ๋ฉด, ํ๋์ ๋ง์ ๊ฐ์ง๊ณ ์์ ๊ฒ ์
๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ HTML ์ ๊ฐ์ ธ์ฌ ๋ ๋น์ด์๋ div ์ผ๋ก ๊ฐ์ ธ์ต๋๋ค. ๊ทธ ํ, ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒญํด์ ์๋ฐ์คํฌ๋ฆฝํธ์ React.js ๋ฅผ ์คํ ์ํค๊ณ ๊ทธ ๋ค์ ํ๋ฉด์ด ์ ์ ์๊ฒ ๋ณด์ด๊ฒ ๋ฉ๋๋ค. 1.2 ๋ง์ฝ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ธ์ค๋ ์๋๊ฐ ๋๋ฆฌ๋ค๋ฉด? ์ฌ์ฉ์๋ ํ๋ฉด์ด ๋ ๋๋ง ๋๋ ์๊ฐ์ ์ค๋ ๋์ ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ ์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ..