react
-
- [Next.js] <Link> ์ปดํฌ๋ํธ ํด๋ฆญ ์, ์ต์๋จ์ผ๋ก ์คํฌ๋กค ๋๋ ํ์ ๋ง๋ ๋ฐฉ๋ฒ
์ปดํฌ๋ํธ ํด๋ฆญ ์, ์ต์๋จ์ผ๋ก ์คํฌ๋กค ๋๋ ํ์ ๋ง๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐNext.js์ @@ ์ปดํฌ๋ํธ๋ฅผ ํด๋ฆญํ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฉด์ ์ต์๋จ์ผ๋ก ์คํฌ๋กค์ด ๋๋ค.์ด๋ฌํ ํ์์ ๋ง๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๊ฐ๋จํ๋ค. ๋ค์๊ณผ ๊ฐ์ด @@ ์ปดํฌ๋ํธ์ @scroll@ ์์ฑ์ ๊ฐ์ @false@๋ก ์ง์ ํด์ฃผ๋ฉด ๋๋ค.import Link from 'next/link'; Move ์ฐธ๊ณ ์ฌ์ดํธ | Next.js" data-og-description="Enable fast client-side navigation with the built-in `next/link` component." data-og-host="nextjs.org" data-og-source-url="https://nextjs.org/docs/app/api-refe..
2024.12.20 -
- [Service] Contentful
Contentful๋ค์ด๊ฐ๋ฉฐHeadless CMS ์ค ํ๋์ธ Contentful ์๋น์ค์ ๋ํ์ฌ ์ ๋ฆฌํด๋ณธ๋ค. Contentful๊ฐ๋ 2013๋ ๋ ์ผ ๋ฒ ๋ฅผ๋ฆฐ์์ ๋ง๋ค์ด์ง Headless CMS(Content Management System, ์ปจํ ์ธ ๊ด๋ฆฌ ์์คํ ) ์๋น์คํ์ฌ Spotify, Red Bull, IKEA ๋ฑ ๊ตต์งํ ๊ธ๋ก๋ฒ ๊ธฐ์ ๋ค์ด ์ด ์๋น์ค๋ฅผ ์ด์ฉํ๊ณ ์๋ค.ํ๋ก ํธ์๋์ ๋ฐฑ์๋(์ปจํ ์ธ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ)๊ฐ ๊ฒฐํฉ๋ ๊ตฌ์กฐ์ ๋ฌ๋ฆฌ, ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ถ๋ฆฌ๋ ํํ์ ์ปจํ ์ธ ๊ด๋ฆฌ ์์คํ ์ด๋ค. Content that takes you everywhereBusiness moves faster when teams producing content have a platform that empowers them to ..
1 2024.11.28 -
- [React Native] Expo CLI vs. React Native CLI
Expo CLI vs. React Native CLI๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ํ๋ก์ ํธ ์์ฑ ๋ฐฉ๋ฒ์ผ๋ก Expo CLI ์ React Native CLI ๋ฐฉ๋ฒ 2๊ฐ์ง๊ฐ ์๋ค.์ด ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. Expo CLI๊ฐ๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ก ์ฑ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ ๋๊ตฌํ๋ก์ ํธ ์์ฑ, ๊ด๋ฆฌ, ์คํ์ ๊ฐ๋จํ๊ฒ ํด์ฃผ๋ ๋ช ๋ น์ค ์ธํฐํ์ด์ค(Command Line Interface)๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถ์ฅ๋๋ ์ ๊ทผ ๋ฐฉ์ ์ ํ๋ก์ ํธ ์์ฑํ๊ธฐ$ npx create-expo-app@latest # ์ ํ๋ก์ ํธ ์์ฑ ์ฃผ์ ํน์ง๊ธฐ๋ณธ ํ ํ๋ฆฟ์ ์ ๊ณตํ์ฌ ์ด๊ธฐ ์ค์ ์์ด ๋ฐ๋ก ์ฑ ๊ฐ๋ฐ ์์ ๊ฐ๋ฅ์นด๋ฉ๋ผ, ์์น ์ ๋ณด, ํธ์ ์๋ฆผ ๋ฑ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ..
2024.11.25 -
- [React.js] React Hook Form ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React Hook Form ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js) ์ ํ๋ฆฌ์ผ์ด์ ์์ ํผ(Form)์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React Hook Form์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React Hook Form๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํผ(Form)์ ์ํ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋จํ๊ณ ํจ์จ์ ์ด๋ฉฐ ํผํฌ๋จผ์ค๊ฐ ๋ฐ์ด๋๋ค.๋ฆฌ์กํธ์ ํ (Hook)์ ํ์ฉํ์ฌ ์ฌ์ฉํ๋ฉฐ, ํผ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๊ณผ ์ ํจ์ฑ ๊ฒ์ฆ(Validation) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. React Hook Form - performant, flexible and extensible form libraryPerformant, flexible and extensible forms with easy-to-use validation.react-..
2024.11.23 -
- [Service] Auth0
Auth0๋ค์ด๊ฐ๋ฉฐ์ธ์ฆ(Authentication) ๋ฐ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๋์์ฃผ๋ Auth0 ์๋น์ค์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.์ด ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด, ์์ ๋ก๊ทธ์ธ ๋ฑ ์ธ์ฆ์ ์ํ ๊ธฐ๋ฅ๋ค์ ์ง์ ์ฝ๋๋ก ๊ตฌํํ์ฌ ๋ง๋ค์ด์ฃผ์ง ์์๋ ๋๋ค. Auth0๊ฐ๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ณ ์์ ํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ์ง์ํ๋ ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ ํ๋ซํผ๊ฐ๋ฐ์๋ Auth0๋ฅผ ์ด์ฉํ์ฌ ๋ณต์กํ ์ธ์ฆ ์์คํ ์ ์ง์ ๊ฐ๋ฐํ์ง ์์๋ ๋๊ณ , ๋ค์ํ ์ธ์ฆ ๋ฐฉ์์ ์ฝ๊ฒ ํตํฉํ ์ ์๋ค. ์ฃผ์ ํน์ง๋ค์ํ ์ธ์ฆ ๋ฐฉ์ ์ง์์ด๋ฉ์ผ/๋น๋ฐ๋ฒํธ์์ ๋ก๊ทธ์ธ (Google, Facebook, GitHub, Twitter ๋ฑ)๋ค์ค ์ธ์ฆ(Multi Factor Authentication)SSO(Single Sign-On)Passwor..
2 2024.11.20 -
- [JavaScript] FusionCharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ
FusionCharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript)์ FusionCharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. FusionCharts๊ฐ๋ ์น ๊ธฐ๋ฐ ๋์๋ณด๋์ ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ(JavaScript) ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ๋ฐ์์ ๊ธฐ์ ์ด ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ฐจํธ, ๊ทธ๋ํ, ๊ฒ์ด์ง(Gauge), ์ง๋ ๋ฑ์ผ๋ก ์๊ฐํ ํ ์ ์๋ค.๋ฌด๋ฃ ๋ฐ ์ ๋ฃ ํ๋์ด ์์ด ํ๋ก์ ํธ์ ํ์์ ๋ฐ๋ผ ์ ํ ๊ฐ๋ฅํ๋ค.๊ณต์ ํํ์ด์ง : JavaScript charts for web & mobile | FusionCharts ํน์ง์ ์ฐจํธ, ํ์ด ์ฐจํธ, ๊ฒ์ด์ง, ํํธ๋งต ๋ฑ 100๊ฐ ์ด์์ ์ฐจํธ ์ ํ ์ง์๋ณต์กํ ๋น์ฆ๋์ค ๋์๋ณด๋๋ ๋ณด๊ณ ์๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.๋ชจ๋ ์ฐจํธ๋ ๋ฐ์ํ ๋์์ธ์ด ์ ์ฉ๋์ด ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, ..
1 2024.11.18 -
- [Axios] ํค๋์ ์ธ์ฆ ์ ๋ณด ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
ํค๋์ ์ธ์ฆ ์ ๋ณด ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐAxios๋ฅผ ์ฌ์ฉํ์ฌ ํค๋์ ์ธ์ฆ(Authorization) ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.์ด ๊ธ์ ๋ฆฌ์กํธ(React) ์ฝ๋๋ก ์์ฑ๋์๋ค. ๋ฐฉ๋ฒโ ํ์ผ์ ์ธ์ฆ ํค๋ ๋ถ๋ถ ์ถ๊ฐํ๊ธฐAPI ํธ์ถ์ ํ๊ณ ์ ํ๋ ํ์ผ ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์ ๋ณ์๋ฅผ ์์ฑํ์ฌ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.// ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์ ๋ณ์const authHeader = (thunkAPI) => { return { headers: { authorization: `Bearer ${thunkAPI.getState().user.user.token}`, }, };};export const createJobThunk = async (job, thunkAPI) => { try { const..
1 2024.11.14 -
- [React.js] ๊ฐ์ฒด ํ๊ธฐ๋ฒ(Object Notation) ๋ฐฉ์๊ณผ ๋น๋ ์ฝ๋ฐฑ ํ๊ธฐ๋ฒ(Builder Callback Notation) ๋ฐฉ์
๊ฐ์ฒด ํ๊ธฐ๋ฒ(Object Notation) ๋ฐฉ์๊ณผ ๋น๋ ์ฝ๋ฐฑ ํ๊ธฐ๋ฒ(Builder Callback Notation) ๋ฐฉ์๋ค์ด๊ฐ๋ฉฐ๋ฆฌ๋์ค ํดํท(Redux Toolkit, RTK)์ ๊ฐ์ฒด ํ๊ธฐ๋ฒ(Object Notation) ๋ฐฉ์๊ณผ ๋น๋ ์ฝ๋ฐฑ ํ๊ธฐ๋ฒ(Builder Callback Notation) ๋ฐฉ์์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ๊ฐ์ฒด ํ๊ธฐ๋ฒ(Object Notation) ๋ฐฉ์ vs. ๋น๋ ์ฝ๋ฐฑ ํ๊ธฐ๋ฒ(Builder Callback Notation) ๋ฐฉ์RTK ๋ฒ์ 1.6.0 ์ด์๋ถํฐ ๊ธฐ์กด์ ๊ฐ์ฒด ํ๊ธฐ๋ฒ(Object Notation) ๋ฐฉ์์์ ๋น๋ ์ฝ๋ฐฑ ํ๊ธฐ๋ฒ(Bulder Callback Notation) ๋ฐฉ์์ผ๋ก ์์ฑํด์ผ ํ๋ค.๊ธฐ์กด์ ๊ฐ์ฒด ํ๊ธฐ๋ฒ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋๋ค. ๊ฐ์ฒด ํ๊ธฐ๋ฒ(Object Notation)..
2024.11.13 -
- [React.js] .js ํ์ผ์์ Uncaught SyntaxError: Unexpected token '<' ์ค๋ฅ ๋ฐ์ํ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ (Vite)
.js ํ์ผ์์ Uncaught SyntaxError: Unexpected token '๋ค์ด๊ฐ๋ฉฐ@.js@ ํ์ผ์์ @Uncaught SyntaxError: Unexpected token '์ด ๋ฌธ์ ๋ Vite๋ก ๋ง๋ ํ๋ก์ ํธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฐ์ ์ํฉ@/src/utils/links.js@ ํ์ผ์์ ์ปดํฌ๋ํธ(Component)๊ฐ @value@๋ก ๋ค์ด ์๋ @key@๊ฐ ๋ค์ด ์๋ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ ์ปดํฌ๋ํธ์์ import ํ์ฌ ์ฌ์ฉํ๋ ค๊ณ ํ ๋, ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค. /src/utils/links.js@icon@ ํค์ ๊ฐ์ ์ธ๋ถ ์ปดํฌ๋ํธ์์ ๋ถ๋ฌ์ฌ ๋ ์์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค.const links = [ { id: 1, text: 'stats', path: '/', ..
2024.11.13 -
- [React.js] <Link> ์ปดํฌ๋ํธ์ <NavLink> ์ปดํฌ๋ํธ ๋น๊ต (React Router)
์ปดํฌ๋ํธ์ ์ปดํฌ๋ํธ ๋น๊ต (React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์์ @@ ์ปดํฌ๋ํธ์ @@ ์ปดํฌ๋ํธ์ ์ฐจ์ด์ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ปดํฌ๋ํธ๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ์์ ์ ๊ณตํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋งํฌ(Link) ์ปดํฌ๋ํธํน์ ๊ฒฝ๋ก๋ก ์ด๋ํ ์ ์๋ ๋ด๋น๊ฒ์ด์ ๋งํฌ๋ฅผ ์์ฑํ๋ค.HTML์ @@ ํ๊ทธ์ ์ ์ฌํ์ง๋ง, ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด SPA(Single Page Application) ๋ด์์ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๋ค. ํน์งํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํ์ง ์๊ณ , ํด๋ผ์ด์ธํธ ์ธก ๋ผ์ฐํ ์ ์ํํ๋ค.๋จ์ํ ๋ผ์ฐํ ์ ์ ํฉํ๋ค.์ ํ๋ ์ํ์ ๋ฐ๋ฅธ ์คํ์ผ๋ง ๊ธฐ๋ฅ์ ์๋ค. ์ฌ์ฉ ์์ ์ฝ๋import { Link } from "react-router-dom";function App() { return ( ..
2024.11.13 -
- [React.js] ๋ฆฌ๋์ค(Redux), ๋ฆฌ๋์ค ํดํท(Redux Toolkit)
๋ฆฌ๋์ค(Redux), ๋ฆฌ๋์ค ํดํท(Redux Toolkit)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ํ๋์ธ ๋ฆฌ๋์ค(Redux)์ ๋ฆฌ๋์ค ํดํท(Redux Toolkit)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ๋ฆฌ๋์ค(Redux)๊ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ์ํ ์ปจํ ์ด๋์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์ค์์์ ๊ด๋ฆฌํจ์ผ๋ก์จ ์ํ ๋ณํ๋ฅผ ์ฝ๊ฒ ์ถ์ ํ๊ณ , ๋๋ฒ๊น ์ ๋จ์ํํ๋ฉฐ, ๋ค์ํ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ ์ฝ๊ฒ ํด์ค๋ค.๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋์ ๋ช ๋ น์ ์คํํ์ฌ ๊ด๋ จ ํจํค์ง๋ฅผ ์ค์นํด์ค๋ค.$ yarn add redux # npm install redux$ yarn add react-redux # npm install react-redux ๋ฆฌ๋์ค..
2024.11.11 -
- [React.js] ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณตํต๋ HTML ์์ ์คํ์ผ์ด ๋ณด์ฌ์ง๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ (normalize.css)
๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณตํต๋ HTML ์์ ์คํ์ผ์ด ๋ณด์ฌ์ง๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ (normalize.css)๋ค์ด๊ฐ๋ฉฐ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ณตํต๋ HTML ์์ ์คํ์ผ์ด ๋ณด์ฌ์ง๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒnormalize.css ์ฌ์ฉํ๊ธฐnormalize.css@normalize.css@๋ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ HTML ์์์ ์คํ์ผ์ ์ผ๊ด๋๊ฒ ๋ณด์ด๋๋ก ๋ง๋ค์ด์ฃผ๋ CSS ํ์ผ์ด๋ค.์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ธฐ๋ณธ ์คํ์ผ์ด ๋ค๋ฅด๊ฒ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์, ์น ํ์ด์ง๊ฐ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ๋ค๋ฅด๊ฒ ๋ณด์ผ ์ ์๋ค.์ด๋ฌํ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด @normalize.css@๋ ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ์คํ์ผ์ ์ด๊ธฐํํ๊ฑฐ๋ ํ์คํํ์ฌ, ์น ํ์ด์ง๊ฐ ์ด๋์๋ ์ผ๊ด๋๊ฒ ๋ณด์ด๋๋ก ํด์ค๋ค.@normalize.css@๋ ๋ชจ๋ ๊ธฐ๋ณธ ์คํ์ผ์ ์ ..
2024.11.07 -
- [React.js] Recharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Recharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React) ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Recharts์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Recharts๊ฐ๋ ๋ฆฌ์กํธ(React) ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ํ ์ฐจํธ๋ฅผ ์ฝ๊ฒ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ ์ ์๋๋ก ๋์์ค๋ค.์ ์ธํ ๋ฐฉ์์ผ๋ก ๋ฆฌ์กํธ์ ์ ๋ง์ผ๋ฉฐ, ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํ์ํ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํด ์ง๊ด์ ์ผ๋ก ์ฐจํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ก ๋์์ค๋ค. ํน์ง๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐจํธ๋ฅผ ๊ตฌ์ฑํ๋ฏ๋ก, ๋ฆฌ์กํธ์ ์ํ(State)์ ์์ฑ์ ํ์ฉํด ๋์ ์ผ๋ก ์ฐจํธ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ค.Recharts๋ ๋ด๋ถ์ ์ผ๋ก D3.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์ฐจํธ๋ฅผ ๋ ๋๋งํ๋ค.D3.js์ ๊ฐ๋ ฅํ๊ณ ๋ค์ํ ๊ธฐ๋ฅ์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ํํ๋ก ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.์ฐจํธ๋ฅผ ๊ตฌ์ฑํ๋ ์์..
1 2024.11.06 -
- [React.ts] PropsWithChildren
PropsWithChildren๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.ts)์์ ์ฌ์ฉํ ์ ์๋ @PropsWithChildren@ ํ์ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.์ด ํ์ ์ ๋ฆฌ์กํธ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋ ์ฌ์ฉํ ์ ์๋ค. PropsWithChildren๊ฐ๋ ํ์ ์คํฌ๋ฆฝํธ(TypeScript)์์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ์์ ์์(@children@)๋ฅผ ํ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ์ ํธ๋ฆฌํฐ ํ์ ๋ณดํต ์ปดํฌ๋ํธ์ ์ ๋ฌ๋๋ ๊ธฐ๋ณธ @props@ ์ธ์๋ ์์ ์์๋ฅผ ํฌํจํ ์ ์์ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.@PropsWithChildren@ ํ์ ์ ์ปดํฌ๋ํธ๊ฐ ์์ ์์๋ฅผ ๊ฐ์ง ์ ์๋๋ก ๋ช ์ํ๋ฉฐ, @children@์ ๋ช ์์ ์ผ๋ก ์ ์ํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค. ์ฌ์ฉ ์์ import { PropsWithChildren } from ..
2024.11.05 -
- [React.js] const Component vs. function Component
const Component vs. function Component๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ @const Component@ ํํ์ ํ์ดํ ํจ์ ๋ฐฉ์๊ณผ @function Component@ ํํ์ ํจ์ ์ ์ธ ๋ฐฉ์์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ์ ์ธํ ์ ์๋ค.์์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํ ์ฐจ์ด์ ์ ์ ๋ฆฌํด๋ณธ๋ค. โ ํ์ดํ ํจ์ ๋ฐฉ์const MyComponent = () => { return( .. )} ํ์ดํ ํจ์(Arrow Function)๋ก ์์ฑํ ์ ์์ผ๋ฉฐ, ์งง์ ์ฝ๋๋ก ์์ฑํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.์๋ฅผ ๋ค์ด, ํ ์ค๋ก ๋ฐํํ๋ ๊ฒฝ์ฐ, @return@ ํค์๋๋ฅผ ์๋ตํ ์ ์๋ค.const MyComponent = () => ( ... ) ์ปดํฌ๋ํธ ์ ์ธ๊ณผ ๋์์ @export default..
2 2024.11.04 -
- [React.js] React Share ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React Share ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐReact Share ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. React Share๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค์ํ ์์ ๋ฏธ๋์ด ๊ณต์ ๋ฒํผ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฌ๋ฌ ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ๋งํฌ๋ฅผ ๊ณต์ ํ ์ ์๋ ๋ฒํผ์ ์ ๊ณตํ๋ฉฐ, ๊ฐ๋จํ ์ค์ ์ ํตํด ๋ฒํผ์ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค. ์ฃผ์ ํน์ง๊ฐ๋จํ๊ฒ ์ค์นํ ์ ์๋ค.ํ์ํ ์์ ๋ฏธ๋์ด ๊ณต์ ๋ฒํผ์ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ค.๋ฒํผ์ ํฌ๊ธฐ, ๋ชจ์, ์คํ์ผ์ ์ฝ๊ฒ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ผ๋ฉฐ, SVG ์์ด์ฝ์ ์ฌ์ฉํ์ฌ ์คํ์ผ์ ์์ ๋กญ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค.๋ค์ํ ์์ ๋ฏธ๋์ด ํ๋ซํผ์ ์ง์ํ๋ค.Facebook, X(Twitter), LinkedIn, Pinterest, Telegram, WhatsApp, Line, R..
2024.11.01 -
- [Next.js] ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ ๋ฐฉ๋ฒ
ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐNext.js์์ ํ๊ฒฝ ๋ณ์(Environment Variable)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒโ ํ๊ฒฝ ๋ณ์ ํ์ผ ์ค์ ํ๊ธฐNext.js๋ @.env@ ํ์ผ์ ํตํด ํ๊ฒฝ ๋ณ์๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋ค.ํ๋ก์ ํธ ์ต์์ ๊ฒฝ๋ก(@/@)์ ๋ค์๊ณผ ๊ฐ์ @.env@ ํ์ผ์ ์์ฑํ๋ค. /.env.localNEXT_PUBLIC_API_URL=https://api.example.comAPI_SECRET_KEY=your-secret-key ⇒ ๋ค์๊ณผ ๊ฐ์ด @.env@๋ค์ ์ฉ๋์ ๋ฐ๋ผ ๋ค์ํ ์ ๋ฏธ์ด๋ฅผ ๋ถ์ผ ์ ์๋ค. ํ๊ฒฝ๋ณ์ ํ์ผ๋ช ์ค๋ช @.env.local@๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ํ๊ฒฝ ๋ณ์ (Git์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ด ์ข๋ค.)@.env.development@๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ํ๊ฒฝ ๋ณ์@..
1 2024.10.29 -
- [React.js] Clerk
Clerk๋ค์ด๊ฐ๋ฉฐNext.js ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ(Authentication) ๋ฐ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๋์์ฃผ๋ Clerk ์๋น์ค์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.์ด ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด, ์์ ๋ก๊ทธ์ธ ๋ฑ ์ธ์ฆ์ ์ํ ๊ธฐ๋ฅ๋ค์ ์ง์ ์ฝ๋๋ก ๊ตฌํํ์ฌ ๋ง๋ค์ด์ฃผ์ง ์์๋ ๋๋ค. Clerk๊ฐ๋ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ(Authentication) ๋ฐ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋๋ ์๋น์ค์์ ๋ก๊ทธ์ธ, ๋ฉํฐํฉํฐ ์ธ์ฆ(MFA), ์ธ์ ๊ด๋ฆฌ ๋ฑ์ ๊ธฐ๋ณธ ์ ๊ณตํ๋ค.Next.js์ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ๊ณผ๋ ์ ๋ง๊ธฐ ๋๋ฌธ์ API ๋ผ์ฐํธ์ ๋ฏธ๋ค์จ์ด์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.Clerk์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ์์ ๋ก๊ทธ์ธ(Google, Facebook, GitHub ๋ฑ) ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค. ํ์๊ฐ์ ๋ฐ ํ๋ก์ ํธ ์์ฑ Cler..
2024.10.28 -
- [React.js] use-debounce ํจํค์ง
use-debounce ํจํค์ง๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์ Next.js ๊ฐ์ ํ๊ฒฝ์์ ์ปดํฌ๋ํธ๊ฐ ์์ฃผ ์ ๋ฐ์ดํธ ๋์ง ์๋๋ก ํด์ฃผ๋ @use-debounce@ ํจํค์ง์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. use-debounce๊ฐ๋ ๋ฆฌ์กํธ(React.js)์ Next.js ๊ฐ์ ํ๊ฒฝ์์ ์ปดํฌ๋ํธ๊ฐ ์์ฃผ ์ ๋ฐ์ดํธ๋์ง ์๋๋ก ํน์ ๋์์ ๋๋ฐ์ด์ค(Debounce) ํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ์ ํธ๋ฆฌํฐ ํ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํ ๋ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ด๋ API ํธ์ถ์ ๋ฐฉ์งํ๋ ๋ฐ ์ ์ฉํ๋ค. ๋๋ฐ์ด์ค(Debounce)์ฌ์ฉ์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ํ ์ด๋ฒคํธ ์ดํ, ์ผ์ ์๊ฐ ๋์ ์ถ๊ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์์์ ๋๋ง ํจ์๋ฅผ ์คํํ๋ ํจํด์ฃผ๋ก API ์์ฒญ์ด๋ ๋ฆฌ์์ค๊ฐ ๋ง์ด ํ์ํ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ค.๊ฒ์์ฐฝ์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋๋ง๋ค..
1 2024.10.27 -
- [React.js] antd ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
antd ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js) ๊ธฐ๋ฐ์ UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ธ antd(Ant Design)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Ant Design(antd)๊ฐ๋ ์๋ฆฌ๋ฐ๋ฐ ๊ทธ๋ฃน์ด ๋ง๋ ๋ฆฌ์กํธ(React.js) ๊ธฐ๋ฐ์ UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋์์ธ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์ ์์ฐ์ฑ์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ, ๊ธฐ์ ์ฉ ์์คํ ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉ๋๋ค.์ฃผ๋ก ๊ด๋ฆฌ ์์คํ , ๋์๋ณด๋, ๊ธฐ์ ์ฉ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ํฉํ๋ค. ์ฃผ์ ํน์ง๋ฒํผ, ์ ๋ ฅ ํ๋, ํ ์ด๋ธ, ๋ชจ๋ฌ, ํผ, ์ฐจํธ ๋ฑ ๋ค์ํ UI ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค.@@, @@, @@, @@, @@, @@๋๋ถ๋ถ์ ์ปดํฌ๋ํธ๊ฐ ๋ฏธ๋ฆฌ ์คํ์ผ๋ง๋์ด ์์ด, ์ต์ํ์ ์ค์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ ๊ฐ๋ฅํ๋ค.๋์์ธ ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด๋ฉฐ, ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํด๋ ํต์ผ๋..
1 2024.10.23 -
- [Styled-Components] ์ธ๋ถ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ UI ์ปดํฌ๋ํธ ์คํ์ผ์ ์ง์ ์์ ํ๋ ๋ฐฉ๋ฒ
์ธ๋ถ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ UI ์ปดํฌ๋ํธ ์คํ์ผ์ ์ง์ ์์ ํ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ@antd@ ๋ฑ ์ธ๋ถ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ UI ์ปดํฌ๋ํธ๋ฅผ Styled-Components๋ฅผ ์ด์ฉํ์ฌ ์ง์ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ์คํ์ผ ํ์ผ(@์ปดํฌ๋ํธ๋ช .style.js@)์ด๋ ์ปดํฌ๋ํธ ํ์ผ(@์ปดํฌ๋ํธ๋ช .js/jsx/tsx@)์์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ณ๊ฒฝ/์ถ๊ฐํ๊ณ ์ ํ๋ ์คํ์ผ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.import styled from "styled-components";import { ์ธ๋ถ์ปดํฌ๋ํธ๋ช } from "์ธ๋ถ_์ปดํฌ๋ํธ_๋ผ์ด๋ธ๋ฌ๋ฆฌ_ํจํค์ง";export const ์ปค์คํ ์ธ๋ถ์ปดํฌ๋ํธ๋ช = styled(์ธ๋ถ์ปดํฌ๋ํธ๋ช )` ์์ฑ: ๊ฐ;`; ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ Styled-Components ์์์ฒ๋ผ ์ฌ์ฉํ๋ฉด ๋๋ค.i..
1 2024.10.23 -
- [Tailwind CSS] shadcn/ui
shadcn/ui๋ค์ด๊ฐ๋ฉฐ๊ฐ๋จํ๊ฒ ๋ณต์ฌ & ๋ถ์ฌ๋ฃ๊ธฐ๋ก ์ฌ์ฉํ ์ ์๋ shadcn/ui์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. shadcn/ui๊ฐ๋ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉํ ์ ์๋ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ ์ปค์คํฐ๋ง์ด์ฆ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ ๋ชจ์์ผ๋ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ค๋ฅด๊ฒ npm ํจํค์ง๋ก ์ค์นํ๋ ๋์ , ์ฌ์ฉ์๊ฐ ํ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ณต์ฌํด์ ์ง์ ํ๋ก์ ํธ์ ๋ถ์ฌ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.๋ถํ์ํ ์์กด์ฑ์ ํผํ ์ ์๊ณ , ์์ ๋ง์ ์ปค์คํ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.๋ฆฌ์กํธ(React.js)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋์๊ณ , Tailwind CSS ๋ฐ Radix UI์ ๊ฐ์ ์คํ ์์ค ๊ธฐ์ ๋ค์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ฌ ๋ง๋ค์ด์ก๋ค.Next.js์ ๊ฐ์ ํ๋ ์์ํฌ์ ์ ํตํฉ๋๋๋ก ์ค๊ณ๋์๋ค.MIT ๋ผ์ด์ผ์ค๋ก ๊ณต๊ฐ๋์ด ์์ด ๋๊ตฌ๋ ์์ ๋กญ๊ฒ ์์ ..
2024.10.20 -
- [Next.js] ํด๋ ๊ตฌ์กฐ ๋ฐ ๋์ ๊ฒฝ๋ก ์ค์ ํ๊ธฐ
ํด๋ ๊ตฌ์กฐ ๋ฐ ๋์ ๊ฒฝ๋ก ์ค์ ํ๊ธฐ๋ค์ด๊ฐ๋ฉฐNext.js๋ฅผ ์ด์ฉํ์ฌ ํด๋ ๊ตฌ์กฐ ๋ฐ ๋์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒโ ๋น๊ณต๊ฐ ํด๋(Private Folder) ์์ฑํ๊ธฐ์ฑ(@app@) ํด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก URL ์ธ๊ทธ๋จผํธ๊ฐ ๋๋ค.๋น๊ณต๊ฐ ํด๋(Private Folder)๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ, ํด๋ ์ด๋ฆ ์์ ๋ฐ์ค(@_@)์ ์ถ๊ฐํ๋ค._css ⇒ @_css@ ํด๋ ์์ฑ ์, ํด๋น ํด๋๋ URL ์ธ๊ทธ๋จผํธ๋ก ๋ ธ์ถ๋์ง ์์ผ๋ฉฐ, ๋ง์ฝ ํด๋น ๊ฒฝ๋ก์ ์ ์ํ ๊ฒฝ์ฐ 404 ํ์ด์ง๋ฅผ ๋ฐํํ๋ค. ๋น๊ณต๊ฐ ํด๋๋ ๋ผ์ฐํ ์ ์ง์ ํฌํจ๋์ง ์๋ ํด๋์ด๋ค.์ผ๋ฐ์ ์ผ๋ก ๋ด๋ถ ๊ด๋ฆฌ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. โก ๋ผ์ฐํธ ๊ทธ๋ฃน(Route Group) ์์ฑํ๊ธฐ๋ผ์ฐํธ ๊ทธ๋ฃน(Route Group)์ ํน์ ํ์ด์ง๋ ๊ฒฝ๋ก๋ฅผ ๊ทธ๋ฃนํํ๋ค.์ด๋ฌํ ๊ทธ๋ฃน์ ์ด๋ฆ..
2024.10.16 -
- [React.js] ์ผ๋ฐ CSS์ CSS Module ๋น๊ต
์ผ๋ฐ CSS์ CSS Module ๋น๊ต๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ CSS Module๊ณผ ์ผ๋ฐ CSS์ ์ฐจ์ด์ ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.๋ ๋ฐฉ์์ ํฐ ์ฐจ์ด์ ์ CSS ํด๋์ค์ ๋ฒ์(Scope)์ ์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง์ด๋ค ์ผ๋ฐ CSS ๋ฐฉ์์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ CSS๋ ์ ์ญ์ ์ผ๋ก ๋์ํ๋ค.์คํ์ผ ์ํธ์์ ์ ์๋ ํด๋์ค ์ด๋ฆ์ด ํ๋ก์ ํธ์ ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.๋ชจ๋ ์ปดํฌ๋ํธ๋ ๊ฐ์ CSS ํ์ผ์ ์ฐธ์กฐํ ์ ์๊ณ , ํด๋์ค ์ด๋ฆ์ด ๊ฒน์น๋ฉด ์คํ์ผ์ด ๋ฎ์ด์์์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค. HomePage.css.button { background-color: blue; color: white;} HomePage.jsximport './HomePage.css';const HomePage = () => { return (..
2024.10.16 -
- [React.js] caseReducers ์์ฑ (Redux Toolkit)
caseReducers (Redux Toolkit) ์์ฑ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ๋์ค ํดํท(Redux Toolkit)์ @caseReducers@ ์์ฑ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.์ด ์์ฑ์ ์ด์ฉํ๋ฉด ์ฌ๋ผ์ด์ค ๋ด์ ๊ฐ๋ณ ๋ฆฌ๋์ ํจ์์ ์ง์ ์ ๊ทผํ๊ณ ํธ์ถํ ์ ์๋ค. createSlice() ํจ์์ caseReducers ์์ฑcreateSlice() ํจ์์ฌ๋ผ์ด์ค(Slice)๋ฅผ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.์ฌ๋ผ์ด์ค๋ ํน์ ์ํ(State)์ ๊ทธ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฆฌ๋์(Reducer)๋ค์ ํ ๊ณณ์ ๋ชจ์๋์ ๊ฒ์ด๋ค.์ฌ๋ผ์ด์ค๋ ์๋์ผ๋ก ์ก์ ์์ฑ์(Action Creators)์ ์ก์ ํ์ (Action Types)์ ์์ฑํด์ค๋ค.reducers ์ต์ @createSlice@ ํจ์์ @reducers@ ์ต์ ์ ์ฌ๋ผ์ด์ค์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฆฌ..
2024.10.03 -
- [React.js] URL์ ํ๋ฆฌ๋ฏธํฐ(Parameter) ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
URL์ ํ๋ฆฌ๋ฏธํฐ(Parameter) ๊ฐ ๊ฐ์ ธ์ค๊ธฐ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ URL์ ํ๋ผ๋ฏธํฐ(Parameter) ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ํ๋ผ๋ฏธํฐ(Parameter)๊ฐ๋ URL ๊ฒฝ๋ก์ ์ผ๋ถ๋ถ์ผ๋ก, ์ฃผ๋ก ํน์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.RESTful API ์ค๊ณ์์ ํํ ์ฌ์ฉ๋๋ฉฐ, ๋ฆฌ์์ค์ ๊ณ ์ ์๋ณ์๋ฅผ ๋ํ๋ธ๋ค.URL ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ์ธ ๊ฒฝ๋ก๋ฅผ ์์ฑํ ์ ์์ด, ๋ค์ํ ๋ฆฌ์์ค์ ๋ํด ๋์ผํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค. ์ข ๋ฅ์ข ๋ฅ์ค๋ช ๊ฒฝ๋ก ํ๋ผ๋ฏธํฐ(Path Parameter)- ํน์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ- ์: @/users/:userId@์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ(Query Parameter)- URL์ @?@ ๋ค์ ์์นํ๋ฉฐ, @ํค-๊ฐ@ ์์ผ๋ก ๋ค์ํ ์ต์ ์ ์ ๋ฌํ๋ค.- ์) @?sea..
1 2024.10.02 -
- [React.js] index.js๋ก ์ปดํฌ๋ํธ(Component), ํ์ด์ง(Page) ๊ด๋ฆฌํ๊ธฐ
index.js๋ก ์ปดํฌ๋ํธ(Component), ํ์ด์ง(Page) ๊ด๋ฆฌํ๊ธฐ๋ค์ด๊ฐ๋ฉฐ๋ค์๊ณผ ๊ฐ์ด @src@ ํด๋ ๋ด๋ถ์ ์๋ @components@, @pages@ ํด๋ ์์ @index.js@ ํ์ผ์ ์์ฑํ์ฌ ์ฌ๋ฌ ์ปดํฌ๋ํธ์ ํ์ด์ง๋ค์ ํ๋์ ํ์ผ์์ ๊ด๋ฆฌํ ์ ์๋ค.์ด์ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋ค. index.js๊ฐ๋ ๋ฆฌ์กํธ(React.js) ํ๋ก์ ํธ์์ @pages@๋ @components@ ํด๋ ์์ ์์นํ @index.js@ ํ์ผ์ ํด๋น ํด๋ ๋ด์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ค์ ํ ๊ณณ์์ ์ฝ๊ฒ ๋ถ๋ฌ์ฌ ์ ์๋๋ก ๋ค์ @export@ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.@index.js@ ํ์ผ ์์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ@pages@ ๋๋ @components@ ํด๋์ @index.js@ ํ์ผ์ ์์ฑํ ํ,..
2024.10.01 -
- [React.js] Thunk API (Redux Toolkit)
Thunk API (Redux Toolkit)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ๋์ค ํดํท(Redux Toolkit)์ Thunk API์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Thunk API๊ฐ๋ ๋น๋๊ธฐ ์์ ์ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋๊ตฌ๋ก, ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.์ฃผ๋ก API ํธ์ถ๊ณผ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ก์ (Action)์ ๋์คํจ์น(Dispatch)ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. ๊ตฌ์ฑ๊ธฐ๋ณธ์ ์ผ๋ก 2๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํ๋ค.@dispatch@์ก์ ์ ๋์คํจ์นํ ์ ์๋ ํจ์๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ก์ ์ ๋ณด๋ผ ์ ์๋ค. @getState@ํ์ฌ ์คํ ์ด์ ์ํ(State)๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์์ํ์ ๋ฐ๋ผ ๋ก์ง์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ@createAsyncThunk@๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์ก์ ํฌ๋ฆฌ์์ดํฐ๋ฅผ ์์ฑ..
1 2024.09.28 -
- [React.js] ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)
๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ๋ผ์ฐํ ์ ํ ๋ ๋ง์ด ์ฌ์ฉํ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.v6์ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํ์๋ค. ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)๊ฐ๋ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฆฌ์กํธ ๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ ํํ ๋ ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ๋ URL์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ์ ์๋ค. ๊ตฌ์ฑ ์์BrowserRouterHTML5์ History API๋ฅผ ์ฌ์ฉํ์ฌ URL์ ๊ด๋ฆฌํ๋ค.์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์์ ์ปดํฌ๋ํธ๋ก ์ฌ์ฉ๋๋ค. Routes๊ฐ ๊ฒฝ๋ก์ ๋ํ ๋ผ์ฐํธ๋ฅผ ์ ์ํ๋ ์ปจํ ์ด๋ํ๋ ์ด์์ @Route@๋ฅผ ์์์ผ๋ก ๊ฐ์ง ์ ์๋ค. Ro..
2024.09.26 -
- [React.js] ๋ผ์ฐํ ๊ด๋ จ ๊ธฐ๋ฅ๋ค ์ ๋ฆฌ (React Router) : useNavigate, useNavigation, redirect, useLocation, useParams, useHistory, Navigate
๋ผ์ฐํ ๊ด๋ จ ๊ธฐ๋ฅ๋ค ์ ๋ฆฌ (React Router) : useNavigate, useNavigation, redirect, useLocation, useParams, useHistory, Navigate๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์์ ๋ผ์ฐํ ์ ์ํด ์ฌ์ฉ๋๋ ๊ด๋ จ ๊ธฐ๋ฅ๋ค์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค.ํ์ด์ง ์ด๋ ๋ฐ ๋ผ์ฐํ ์ ์ํด ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router)์ ์ฌ๋ฌ ํ ๊ณผ ์ปดํฌ๋ํธ, ํจ์๋ค์ ์ฌ์ฉํ ์ ์๋ค. โ useNavigate()๊ฐ๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(React Router) v6 ์์ ์ ๊ณตํ๋ ํ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.์ปดํฌ๋ํธ ๋ด์์ ๋ฒํผ ํด๋ฆญ, ์ด๋ฒคํธ ๋ฐ์ ์ ํน์ ํ์ด์ง๋ก ์ด๋ํ ๋ ์ฌ์ฉํ๋ค. ํน์ง@push@์ @replace@๋ฅผ ์ค์ ํ ์ ์์ด ํ์คํ ๋ฆฌ์ ์ถ๊ฐ..
1 2024.09.26