npm install
npm start
src
- components: 리μ‘νΈ μ»΄ν¬λνΈ
- hooks: 컀μ€ν
ν
- pages: κ° νμ΄μ§
- store: 리μ½μΌ μν κ΄λ ¨
- styles: κΈλ‘λ² μ€νμΌ
μ μ μν κ΄λ¦¬λ₯Ό νκΈ° μν΄μ 리μ½μΌμ μ¬μ©νμμ΅λλ€. μ΄λ² κ³Όμ λ₯Ό μ§ννλ©΄ κ·Έλμ Redux, Context APIλ₯Ό μ¬μ©νμ¬μ μλ‘κ² λ¦¬μ½μΌμ νλ² μ μ©μ ν΄λ³΄μμ΅λλ€. 리μ½μΌ μ¬μ©νλ©΄μ λλμ μ νμ€ν κ°λ°μ μΈ‘λ©΄μμλ 보μΌλ¬νλ μ΄νΈκ° λ§μ 리λμ€ λ³΄λ€ μ²μ μ¬μ©νλ μ¬λμκ²λ μ κ·ΌνκΈ°κ° μμνμ΅λλ€. κ·Έλ¦¬κ³ λ¦¬μ½μΌλ νμ΄μ€λΆμμ κ°λ°λμ΄μ 리μ‘νΈμ Suspenseμ ErrorBoundary νΈνμ±μ΄ μ’μ μ¬μ©νκΈ°κ° μμνλμ λ μλκ² κ°μ΅λλ€.
useDebounce 컀μ€ν ν μ λ§λ€κΈ° μν΄μ lodashμ μλ λλ°μ΄μ€ ν¨μλ₯Ό μ΄μ©νμμ΅λλ€.
κ²μΉμ΄ μ λ ₯μ°½μ λλ°μ΄μ±μ μ μ©νμ¬ ν΄λΉ κ²μμ΄λ₯Ό κΈ°λ°μΌλ‘ API μμ²μ ν΅ν΄ νλ©΄μ μλ΅λ°μ κ²°κ³Όλ₯Ό λνλμ΅λλ€.
κ°κ²© μ λ£, 무λ£μ 쑰건μ λ°λΌ API μμ²μ ν΅ν΄ μλ΅λ°μ κ²°κ³Όλ₯Ό λνλμ΅λλ€.
κ° κ²μμ΄, νν°λ₯Ό ν΅ν΄μ μνκ° λ°λλλ νμ΄μ§λ€μ΄μ μ 보λ₯Ό μ΄κΈ°ννμ¬ κ΄λ¦¬νμμ΅λλ€.
μΈλΆ ꡬν λ‘μ§ νμ΄μ§λ€μ΄μ μ»΄ν¬λνΈμλ
- pageList: νμ¬ νλ©΄μ 보μ¬μ§λ νμ΄μ§ λ²νΈ 리μ€νΈ
- lastPage: νμ¬ νλ©΄μ΄ μλλΌ μ 체 νμ΄μ§μ λ§μ§λ§ νμ΄μ§ λ²νΈ
- currentPage: νμ¬ νμ΄μ§ λ‘ κ΅¬μ± λμ΄ μμ΅λλ€.
-pageList ꡬν λ‘μ§
const startPage = Math.max(currentPage - 4, 1);
const endPage = Math.min(
currentPage + 4,
Math.ceil(data.course_count / 20)
);
const pageArr = [];
for (let i = startPage; i <= endPage; i++) {
pageArr.push(i);
}
- μμ νμ΄μ§μ λ νμ΄μ§ λ²νΈλ₯Ό κ΅¬ν΄ λ°λ³΅λ¬Έμ μ§ννμ¬ κ΅¬μ±νμμ΅λλ€.