๊ธฐ๋ฅ ์๊ตฌ์ฌํญ ๋ถ์ ํผ๊ทธ๋ง์์ ๊ฐ์ ธ์๋ค. ์์์ ์ ์ ์๋ ๊ฒ์ ํ์ด์ง๊ฐ ์ต๋ 7๊ฐ๋ง ๋ณด์ฌ์ ธ์ผ ํ๋ค๋ ๊ฒ์ด๊ณ , ์ ํ๋ ํ์ด์ง๋ฅผ ๊ฐ์ด๋ฐ์ ์ค๋๋ก ํด์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๊ตฌํ export default function Pagination({ currentPage, setCurrentPage, allDataCount, perPageDataCount }: Props) { const pageCount = Math.ceil(allDataCount / perPageDataCount); const pageNumberList = createPageNumberList(currentPage, pageCount); return ( {pageCount > PAGE_LIMIT && ( setCurrentPage(current..
์ ์ฒด ๊ธ
์ฑ์ฅํ๊ธฐ ์ํ ๊ธ์ ์์ฑํ๋ ค๊ณ ๋ ธ๋ ฅ์ค ์ ๋๋ค์ฝ๋ฉ ์ปจ๋ฒค์
์กฐ์จ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ์ ๋๋ก ๋ง์ถ์ด ๋ณธ ์ ์ด ์์๋ค. ์ด๋ฒ์ ์คํ๋ฆฐํธ์์ ์ค๊ธ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ํ์คํ๊ฒ ์ ํ๊ฒ ๋์๋ค. ์ด๋ฅผ ์ ์งํค๋ ค๊ณ ๋
ธ๋ ฅ๋ง ํ๋ฉด ๋๋ค. ๋์ถฉ ์ด์ ๋๋ก ์ ํ๋๋ฐ ์ฌ์ฉํ๊ณ ์๋ airbnb ๋ฃฐ์์ ์ด๋์ ๋ ์ปจ๋ฒค์
์ ํต์ผ์์ผ์ฃผ๊ณ ์ฒ์๋ถํฐ ์ธ์ธํ๊ฒ ์ก๊ณ ๊ฐ๊ธฐ์๋ ์๊ฐ์ด ์์ผ๋ฏ๋ก ๋๋จธ์ง ์ปจ๋ฒค์
์ ์ถํ ๊ฐ๋ฐ์ ์งํํด๋๊ฐ๋ฉด์ ํ๊ธฐ๋ก ํ๋ค. ์ญํ ๋ถ๋ฐฐ ์ด์ ์ ๊ณตํต ์ปดํฌ๋ํธ ์์
๋ถ๋ฐฐ ๋๋ ์ถํ์ ์ด ํ๋ก์ ํธ์์ ๊ณต๊ณ ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ ์บ์ฑํ๋ ์์
(ํ์ด์ง๋ค์ด์
์ด์ฉ)์ ์ํํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ๊ณตํต ์ปดํฌ๋ํธ์์ pagination์ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ํ์๋ค์๊ฒ ์ดํ์ ํ์๋ค. ๋คํํ๋ ๋ด ์๊ฒฌ์ ๋ฐ์๋ค์ฌ์ฃผ์
์ pagination ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ฒ ๋..
eslint ์ค์ airbnb๋ฃฐ์ ๋ฐ๋ฅด๊ธฐ๋ก ํ๋ค. yarn add -D eslint-config-airbnb eslint-config-airbnb-typescript yarn add -D eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks @typescript-eslint/eslint-plugin yarn add -D @typescript-eslint/parser yarn add -D prettier eslint-config-prettier eslint-plugin-prettier ์ ๊ฐ์ด ์ค์น๋ฅผ ์งํํ, { "env": { "browser": true, "es6": true }, "extends..
์
์ฌ๊ณผ์ ๋ฅผ ๋ฐ๋ค..! ์ง์ธ ์ถ์ฒ์ ํตํด ์์ ์คํํธ์
์์ Next.js์ ts๋ก ๊ฐ๋ฐํ๋ ์ง๋ฌด์ ์ฑ์ฉ๋ ๊ธฐํ๋ฅผ ์ป์์๋ค. ์ฐ๋ฝํ์ง ์ผ๋ง ๋์ง ์์ ์
์ฌ๊ณผ์ ๋ฅผ ๋ฐ๊ฒ ๋์๋ค ์ผ์ ํค์ฐ๋ค ์
์ฌ๊ณผ์ ๋ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด์๋๋ฐ ๊ฐ๋จํ ๊ณผ์ ์ด์ง๋ง ๋์์ธ ์์์ด ์ฃผ์ด์ง์ง ์๊ณ ํ๊ฐํญ๋ชฉ์๋ ์ฐฝ์์ฑ์ ๊ฐ์กฐํ๊ธฐ ๋๋ฌธ์ ๋์ถฉ ๋ง๋ค๋ค๊ฐ๋ ๋์ ๋์ง ์์ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์ ๋ด ๋๋ฆ๋๋ก ๊ณผ์ ์ ์ค์ผ์ผ์ ํค์์ ์งํํ๋ค. ๊ณผ์ ๋ฅผ ์งํํ๋ฉฐ ์ฒ์ ์จ๋ณด๋ ๊ธฐ์ ๋ค์ (graphql, supabase)๋ฅผ ์ ์ฉํ๋ฉฐ ๊ณผ์ ๋ฅผ ๋ง๋๋ ์ค์ ์ผ์ฃผ์ผ๋ก๋ ๋ฌด๋ฆฌ์ผ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ ํ์ฌ ์คํ๋ฆฐํธ๋ผ๋ ๋ถํธ์บ ํ์ ์ฐธ์ฌํ๊ณ ์๊ณ ํ์ฌ์ ๋ถํธ์บ ํ์ ๋ณํ์ ํ๋ค๊ธฐ ๋๋ฌธ์ ๊ณผ์ ๋ฅผ ์ํํ๋ ์ฃผ๋ง๋์ ์ ๋ง ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค. ์์ง ์ค๊ธ ํ๋ก์ ํธ์ ์ฌ..
๋ฌธ์ ์ ์๊ตฌ์ฌํญ ์์ฒ๋ผ 6๊ฐ์ ๋ชจ๋ฌ์ ๋ง๋ค์ด์ผ ํ๋ค. ๋ด๊ฐ ๋ชจ๋ฌ์ ๋ง๋ ๋ฐฉ๋ฒ export const Modal = ({ modalRef, openModal, handleModalClose, children, }: Props) => { if (!openModal) { return ; } return ( . {children} ); }; ์์ modal์ ์ฌ๋ฌ ๋ชจ๋ฌ์ ๊ณตํต ๋ถ๋ชจ ์ปดํฌ๋ํธ ์ญํ ์ ํ๋ฉฐ, ๋ชจ๋ฌ์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ฃ์ด๋์๋ค. ๋ชจ๋ฌ์ ์ฌ๋ ํจ์(openModal์ true๋ก ๋ฐ๊พธ๋ ํจ์)์ ๊ฒฝ์ฐ๋ ๋ชจ๋ฌ์ ์ฌ์ฉํ๋ ์ชฝ์์ ๋ง๋ค์ด์ค์ผ ํ๋ค. ๋ชจ๋ฌ์ ๋ซ๋ ํจ์ ๋ํ ๋ง์ฐฌ๊ฐ์ง์๊ณ , ์ด๊ฒ๋ค์ ๋ชจ๋ฌ์ ์ฌ์ฉํ๋ ์ชฝ์์ ์ผ์ผ์ด state๋ก ์์ฑํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด์๊ธฐ ๋๋ฌธ์ ์ปค์คํ
ํ
์ ๋ง๋ค์๋ค. import {..
์ข์๋ ์ React-hook-form์์ ์ ๊ณตํด์ฃผ๋ ์ปค์คํ
ํ
์ ์ด์ฉํ๋ฉด ์ ๋ง ๊ฐํธํ ํผ์ ์กฐ์ํ ์ ์์๋ค. ๋จ์ํ ์์ฒ๋ผ ์ ๊ณ ์ด๋ฅผ input์ ๋ฃ์ด์ค๋ค๋ฉด ์ด๋ฉ์ผ์ด ๋น์์ ๋, ์ ๊ท์์ ๋ง์ง ์์๋, checkIsDuplicated๋ผ๋ ๋น๋๊ธฐ ํจ์์์ true๊ฐ ์๋ ์๋ฌ๋ฅผ ๋ฆฌํดํ ๋ ๊ฐ๊ฐ ์๋ง์ error๋ฅผ ์ธํ
ํด์ค๋ค. ์ฝ๋๋ ๊ฝค๋ ๊น๋ํ๊ฒ ์งค ์ ์์๊ณ ๋๋ฌด ๋ง์์ ๋ค์๋ค. ๋ณ๋ก ์๋์ ์๋ฌด๊ฒ๋ ์
๋ ฅํ์ง ์๊ณ ์ ์ถ ๋ฒํผ์ ๋๋ฅด๋ฉด react-hook-form์์ ์ ๊ณตํ๋ ํจ์์ธ handleSubmit์ ์คํ์์ผ error๊ฐ ์์์์ api request๋ฅผ ๋ณด๋ด์ง ์๋๋ก ํ์๋ค. ๋ฌธ์ ๋ ์ด handleSubmit์ ์คํํ๋ฉด ์์ ๊ฐ์ด ์๋์ผ๋ก focusing์ด ๋๋ค๋ ๊ฒ์ด๋ค.(์๋ฌ๊ฐ ๋ณด์ฌ์ผ ํ๋๋ฐ ..
์ด๋ฏธ์ง ์ด์ Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` to automatically optimize images. ์ธ๋ถ url์์ ๋ฐ์์ค๋ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ๋ next/Image๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๊ณ ๋ คํ๋ผ๊ณ ํ๋ค. ๋ฐ๋ฉด์ ์ธ๋ถ์์ ๋ฐ์์ค๋ ์ด๋ฏธ์ง๊ฐ ์๋ ์๋ฒ ์์ฒด, ์ฆ ํ๋ก์ ํธ assets์ ์๋ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ๋ Image๋ฅผ ์ ์ด์ฃผ์ง ์์ผ๋ฉด ๋ณด์ด์ง๊ฐ ์์๋ค. ์๋ฒ ๋ด์ ์กด์ฌํ๋ ์ด๋ฏธ์ง๋ Image ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ผ ์ด๋ฏธ์ง๊ฐ ์ ๋๋ก ๋จ์ง๋ง next.config.js ์ค์ ์ ๋ณ๋๋ก ํด์ฃผ์ง ์์๊ธฐ์ link[imageSource] ๋ถ๋ถ ๋๋ฌธ์ Image ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ ..
ํ๊ณ ์์ฑ ์ด์ ์๊ฐ์ด ๋ฉ์ธ์ง๊ฐ ์๋ค ๊ทธ๋์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค ๋๋ ๋ฌด์์ ์ํ๋๊ฐ? ํํธ2 ํ์ ์ค์ ์ด์ ์ด ์ข๊ณ ์ดํด๋ ฅ๋ ์ข์ผ์ ๋ถ์ด ์์๋ค. ํ์ง๋ง ์๋ฌด๋๋ ๊ทธ ๋ถ์ ์ฝ๋ฉ์ ์์ํ์ง ์ผ๋ง ์ ๋์๋ค ๋ณด๋ ๋์์ด ํ์ํ์๊ณ ๋์์ ์์ฒญ ๋ฐ์์๋ ์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์๋ค. ๋ด๊ฐ ์ค๋ช
์ ์ํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ธฐ๋ ํ์ง๋ง ๊ทธ๋ถ์ ์ดํด๋ ฅ์ด ์ข์ผ์
จ๋ค. ๊ทธ๋ถ์ด ํท๊ฐ๋ คํ์๋ ๊ฑธ ๋์์ ๋๋ฆฌ๋ฉด ์ดํดํ์๊ณ ์ข์ํ๋ ๋ชจ์ต์ ๋ณผ๋ ์ ๋ง ๋ฟ๋ฏํ๋ค. ๋๋ถ์ ์ค๋ช
ํ๋ ๋ฅ๋ ฅ๋ ์กฐ๊ธ์ ๋์์ง ๊ฒ ๊ฐ๊ณ , ์ด๋ฐ ์ผ์ ํ๋ค๋ ๊ฑฐ ์์ฒด๊ฐ ํ์ ๋์์ด ๋์๋ค๊ณ ์๊ฐํ๋ค. ๋๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ๊ฒช์๋์ง, ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๋๋ ๋ ๋ง๊ฐ์ด ์์ฝ๋ค. ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ด๋ฅผ ๋นจ๋ฆฌ ๋ง๋ค๊ณ ์ถ์ ๋๋จธ์ง ์ฝ๋ ํ์ง์ด ๋๋ฌด ์ ์ข์์ก๊ณ , ๊ทธ ์ดํ์..