๐ Front-End/Next.js
๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, ํ๋ฉด์ ๋ฌด์์ธ๊ฐ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด ์ด๋์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. 1. SSR (Server Side Render) ํ์ด์ง์ ๋ํ ์์ฒญ์ด ์์ ๋๋ง๋ค ์๋ฒ์์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋ฐํ ํฉ๋๋ค. ์๋ฒ์์ ๋งค๋ฒ ์ฐ์ฐ์ ํด์ผํ๋ฉฐ ์บ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋์ ์ผ๋ก ์ด๋ ต๊ธฐ ๋๋ฌธ์ SSG์ ๋นํด ๋๋ฆฝ๋๋ค. ํ์ง๋ง ํญ์ ์ต์ ์ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ์ด์ผํ๋ ๊ฒฝ์ฐ, SSR๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. (ํ๋ก ํธ)์๋ฒ์์ HTML ํ์ผ์ ๋ง๋ค์ด์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ CSR์ ๋นํด ์ฌ์ฉ์๊ฐ ๋ ๋น ๋ฅด๊ฒ ํ๋ฉด์ ์ธ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฒคํธ ๋ฑ ํ์ด์ง์ ๋์์ ์ํด์๋ hydrate๋ผ๋ ๊ณผ์ ์ ํตํด์ JS ์ฝ๋๊ฐ ์คํ๋์ด์ผ ํฉ๋๋ค. ์๋ฒ ๊ฐ ๊ทธ๋ฆฝ๋๋ค. ๊ทธ๋ฆฐ๋ค : ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ํ๋ธ๋ค. ์ฆ, ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๊ทธ๋ฆฐ๋ค...
๐ Front-End/Next.js
React์ ๋ฒ๊ฑฐ๋ก์ด ๋ถ๋ถ ๋ฆฌ์กํธ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒ์๋ถํฐ ๋น๋ํ๋ ค๋ฉด ์ ๊ฒฝ ์จ์ผํ๋ ์ธ๋ถ์ฌํญ์ด ๋ง์ต๋๋ค. Webpack์ผ๋ก ๋ฒ๋ค๋ง & Babel ์ปดํ์ผ๋ฌ๋ก JSX → JS ๋ก ๋ณํ ์ต์ ํ (Code Splitting ๋ฑ)๋ฅผ ํด์ผํจ Static Pre-Rendering (์ฑ๋ฅ๊ณผ SEO๋ฅผ ์ํด) / SSR ๋๋ CSR ๋ฅผ ํด์ผํจ ๋ฆฌ์กํธ ์ฑ๊ณผ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์๋ฒ ์ธก ์ฝ๋ ์์ฑ NextJS: React ํ๋ ์์ํฌ NextJS๋ React ์ ๋ฒ๊ฑฐ๋ก์ด ์ ์ ๊ฐํธํ๊ฒ ํด๊ฒฐ ํ์ต๋๋ค. ์ง๊ด์ ์ธ ํ์ด์ง ๊ธฐ๋ฐ ๋ผ์ฐํ
(Dynamic routes ๋ ์ง์ํจ) Pre-rendering, static generation (SSG), server-side rendering (SSR) ์ด ํ์ด์ง ๋จ์๋ก ์ ๊ณต๋จ ์..
๐ Front-End/Next.js
Next.js ๋ ๋ฐ๋ก ์ค์ ์ ํด์ฃผ์ง ์๊ณ ๋ SSR, SEO๋ถํฐ TypeScript๊น์ง ์์ฐ์ ํ์ํ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ ์์ฃผ ๊ฐ๋ ฅํ React ํ๋ ์์ํฌ ์
๋๋ค. 2. ์ด๋์ ๋ง๋ค์๋ Next.js๋ Vercel์ด๋ผ๋ Frontend Team์์ ๋ง๋ค์์ต๋๋ค. 3. ์ฌ์ฉํด์ผ ํ๋ ์ด์ 3.1 SSR Next.js ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ์
๋๋ค. ์ดํดํ๊ธฐ ์ข๊ฒ ๋จผ์ ๋ฐ๋ ๊ฐ๋
์ธ SPA ์ CSR ์ ๋ํด ๋จผ์ ์ ๋ฆฌ ํ๊ฒ ์ต๋๋ค. 3.1.1 SPA (Single Page Application) ์ ํต์ ์ธ ์น ํ์ด์ง ๋ง๋๋ ๋ฐฉ์์ client ์์ server ๋ก ์ต์ด์ ์์ฒญ์ ๋ณด๋ด๊ณ server ๋ ์์ฒญ์ ๋ฐ์ client ์๊ฒ ์๋ต์ ๋ณด๋ธ ํ, client์์ ํ๋ฉด์ด ๋ณด์
๋๋ค. ์ดํ client ์์..
๐ Front-End/React.js
๊ธฐ์กด์ useState ์ฌ์ฉ ๋ฐฉ์ const [count, setCount] = useState(์ด๊ธฐ ๊ฐ); useState ๋ฅผ ์ฌ์ฉํ๋ฉด value ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฐ์ state ์ value ์
๋๋ค. ๋ ๋ฒ์งธ ๊ฐ์ value ์ ์ํ ๋ณํ ํจ์ ์
๋๋ค. useState ์ ์ด๊ธฐ ๊ฐ์ ๋ฃ์ผ๋ฉด โ const [count, setCount] = useState(1); count ์ ์ซ์ ๊ฐ์ด ๋ค์ด์จ๋ค๊ณ TypeScript ๊ฐ ์ด๊ธฐ ๊ฐ์ ๊ฐ์ง๊ณ ์ถ๋ก ์ ํ ๊ฒ ์
๋๋ค. ๋ํ const [count, setCount] = useState(1); setCount(2); ์๋ฌด ์ผ๋ ์๊ธฐ์ง ์์ต๋๋ค. ์์ฑํด์ผ ํ๋ ๋๋ก ์์ฑ์ ํ๊ธฐ ๋๋ฌธ์ ํ์ง๋ง ๋ง์ฝ string ํ์
์ ๋ณด๋ด๊ฒ ๋๋ฉด, ์๋ฌ๊ฐ ์๋ค๊ณ ๋งํด์ค..
๐ Front-End/React.js
default props App.tsx import Circle from "./Circle"; function App() { return ( ); } export default App; Circle.tsx import React from "react"; import styled from "styled-components" interface ContainerProps { bgColor : string; } const Container = styled.div` width : 200px; height : 200px; background-color : ${(props) => props.bgColor}; `; interface CircleProps { // TypeScript ์๊ฒ bgColor ๋ ๋ฌธ์์ด์ด๋ผ๊ณ ..
๐ Front-End/React.js
๊ธฐ๋ณธ์ ์ธ ํ์
์คํฌ๋ฆฝํธ์ ๋ํ ์ค๋ช
์ ๋ณ๋์ ํฌ์คํ
์ ํตํด ์ ๋ฆฌ๋ฅผ ํ์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ฆฌ์กํธ์์ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ป๊ฒ ์ ์ฉ ํ ์ ์๋์ง ๊ณต๋ถํ๊ณ ์ ๋ฆฌ ํฉ๋๋ค! + ์คํ์ผ ์ปดํฌ๋ํธ ์ ์ฉ ์ค์น โ 1. ์ฒ์๋ถํฐ CRA + ํ์
์คํฌ๋ฆฝํธ๋ฅผ ํ ๋ npx create-react-app my-app --template typescript or yarn create react-app my-app --template typescript 2. ํ๋ก์ ํธ ์ค๊ฐ์ ์ค์นํ๋ ๋ฐฉ๋ฒ npm install --save typescript @types/node @types/react @types/react-dom @types/jest or yarn add typescript @types/node @types/react @type..
๐ Front-End/React.js
โ useInfiniteQuery ๊ฐ์ ธ์ค๊ธฐ import InfiniteScroll from "react-infinite-scroller"; import { Person } from "./Person"; // ์ด ๋ถ๋ถ import { useInfiniteQuery } from "react-query"; const initialUrl = "https://swapi.dev/api/people/"; const fetchUrl = async (url) => { const response = await fetch(url); return response.json(); }; export function InfinitePeople() { // ์ปดํฌ๋ํธ์์ ํธ์ถ const {data, fetchNextPage, hasNe..
๐ Front-End/React.js
์ฌ์ฉ์๊ฐ ํ์ด์ง์ ํน์ ์ง์ ์ ๋๋ฅด๊ฑฐ๋ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ๋ก๋ฉ๋ฉ๋๋ค. React Query ๋ ๋ฐ์ดํฐ์ ํ์ด์ง ๋ฒํธ๋ฅผ ์ถ์ ํ๊ฒ ๋ฉ๋๋ค. ๋ฌดํ ์คํฌ๋กค ์ด๋ โ ์ฌ์ฉ์๊ฐ ์คํฌ๋กค ํ ๋๋ง๋ค ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ ์
๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ฒ๋ณด๋ค ํจ์ฌ ํจ์จ์ ์
๋๋ค. ์ฌ์ฉํ๋ ์ง์ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ฑฐ๋ ํ์ด์ง์ ํน์ ์ง์ ์ ์คํฌ๋กค ํ์ ๋ ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ํ๊ฑฐ๋ ( ํ์ด์ง์ ํ๋จ ๋ฑ ) โ useInfiniteQuery ์ ํน์ง ๋ฐํ ๊ฐ์ฒด์์ ๋ฐํ๋ ๋ฐ์ดํฐ ํ๋กํผํฐ์ ํํ๊ฐ ๋ค๋ฆ
๋๋ค. useQuery : ๋จ์ํ ์ฟผ๋ฆฌ ํจ์์์ ๋ฐํ๋๋ ๋ฐ์ดํฐ useInfiniteQuery : ๋ ๊ฐ์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ๋๋ ๋ฐ์ดํฐ ํ์ด์ง ๊ฐ์ฒด ..