Skip to main content
OrderBySelectλŠ” λͺ©λ‘ νŽ˜μ΄μ§€μ—μ„œ μ •λ ¬ 기쀀을 μ„ νƒν•˜λŠ” μžλ™ 생성 μ»΄ν¬λ„ŒνŠΈμž…λ‹ˆλ‹€. λ°±μ—”λ“œμ˜ OrderBy enum을 기반으둜 μƒμ„±λ˜λ©°, ν•œκΈ€ λ ˆμ΄λΈ”μ΄ μžλ™μœΌλ‘œ λ§€ν•‘λ©λ‹ˆλ‹€.

핡심 κΈ°λŠ₯

μžλ™ 생성

Entity μ •μ˜μ—μ„œ μžλ™ 생성OrderBy enum 기반

ν•œκΈ€ λ ˆμ΄λΈ”

μžλ™ λ ˆμ΄λΈ” λ§€ν•‘β€œIDμ΅œμ‹ μˆœβ€, β€œμƒμ„±μΌμ˜€λ¦„μ°¨μˆœβ€ λ“±

useListParams 톡합

register νŒ¨ν„΄ 지원URL 동기화 μžλ™

μ»€μŠ€ν„°λ§ˆμ΄μ§•

μŠ€μΊν΄λ”© 파일자유둜운 μˆ˜μ • κ°€λŠ₯

μžλ™ 생성 쑰건

OrderBySelectλŠ” λ°±μ—”λ“œμ— OrderBy enum이 μ •μ˜λ˜λ©΄ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.

λ°±μ—”λ“œ μ •μ˜

μžλ™ μƒμ„±λ˜λŠ” 파일

μœ„μΉ˜: web/src/components/user/UserOrderBySelect.tsx μžλ™ μƒμ„±λ˜λŠ” λ ˆμ΄λΈ”: web/src/services/sonamu.generated.ts
λ ˆμ΄λΈ” 생성 κ·œμΉ™
  • id-desc β†’ β€œIDμ΅œμ‹ μˆœβ€
  • created_at-asc β†’ β€œμƒμ„±μΌμ˜€λž˜λœμˆœβ€
  • username-desc β†’ β€œμ΄λ¦„λ‚΄λ¦Όμ°¨μˆœβ€
ν•„λ“œλͺ…κ³Ό μ •λ ¬ λ°©ν–₯(asc/desc)을 μ‘°ν•©ν•˜μ—¬ μžλ™ μƒμ„±λ©λ‹ˆλ‹€.

κΈ°λ³Έ μ‚¬μš©λ²•

useListParams와 ν•¨κ»˜ μ‚¬μš©

λ™μž‘:
  1. μ‚¬μš©μžκ°€ μ •λ ¬ μ˜΅μ…˜ 선택
  2. register("orderBy")κ°€ μžλ™μœΌλ‘œ URL μ—…λ°μ΄νŠΈ
  3. API 호좜 μ‹œ listParams.orderByκ°€ 전달됨
  4. λ°±μ—”λ“œμ—μ„œ μ •λ ¬ 적용

Props

κΈ°λ³Έ μ‚¬μš© (register 없이)

Props 상세

placeholder

μ„ νƒλ˜μ§€ μ•Šμ•˜μ„ λ•Œ ν‘œμ‹œλ˜λŠ” ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

textPrefix

각 μ˜΅μ…˜ μ•žμ— λΆ™λŠ” μ ‘λ‘μ‚¬μž…λ‹ˆλ‹€.
textPrefix ν™œμš© μ˜ˆμ‹œλͺ©λ‘ νŽ˜μ΄μ§€ 상단에 ν˜„μž¬ 정렬을 λͺ…ν™•νžˆ ν‘œμ‹œν•˜κ³  싢을 λ•Œ μœ μš©ν•©λ‹ˆλ‹€:

clearable

β€œμ „μ²΄β€ μ˜΅μ…˜μ„ μΆ”κ°€ν•˜μ—¬ 정렬을 μ΄ˆκΈ°ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ‚¬μš© μ‹œλ‚˜λ¦¬μ˜€:
  • κΈ°λ³Έ μ •λ ¬λ‘œ λŒμ•„κ°€κ³  싢을 λ•Œ
  • μ •λ ¬ 없이 λ°μ΄ν„°λ² μ΄μŠ€ μˆœμ„œλŒ€λ‘œ 보고 싢을 λ•Œ

disabled

μ»΄ν¬λ„ŒνŠΈλ₯Ό λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

className

Tailwind CSS 클래슀λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.

μ‹€μ „ 예제

μ™„μ „ν•œ λͺ©λ‘ ν•„ν„°

λͺ¨λ°”일 λ°˜μ‘ν˜•

μ •λ ¬ μ˜΅μ…˜ 수 ν‘œμ‹œ

μ»€μŠ€ν„°λ§ˆμ΄μ§•

OrderBySelectλŠ” μŠ€μΊν΄λ”© νŒŒμΌμ΄λ―€λ‘œ 자유둭게 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ ˆμ΄λΈ” λ³€κ²½

μ•„μ΄μ½˜ μΆ”κ°€

νŠΉμ • μ˜΅μ…˜ 숨기기

κ·Έλ£Ήν™”

λ°±μ—”λ“œ 처리

OrderBySelectμ—μ„œ μ„ νƒν•œ 값은 λ°±μ—”λ“œλ‘œ μ „λ‹¬λ˜μ–΄ μ‹€μ œ 정렬이 μ μš©λ©λ‹ˆλ‹€.

Modelμ—μ„œ 처리

exhaustive νŒ¨ν„΄

exhaustive()λŠ” λͺ¨λ“  경우λ₯Ό μ²˜λ¦¬ν–ˆλŠ”μ§€ 컴파일 νƒ€μž„μ— κ²€μ¦ν•©λ‹ˆλ‹€.

μž¬μƒμ„±

OrderBySelectλŠ” 초기 생성 ν›„ μžλ™ μž¬μƒμ„±λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μž¬μƒμ„±μ΄ ν•„μš”ν•œ 경우

  1. μ»΄ν¬λ„ŒνŠΈ νŒŒμΌμ„ μ‚­μ œν•œ 경우
  2. Entity의 OrderBy enum이 크게 λ³€κ²½λœ 경우

μž¬μƒμ„± 방법

μž¬μƒμ„± μ‹œ μ£Όμ˜μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•œ λ‚΄μš©μ€ μž¬μƒμ„± μ‹œ μ‚¬λΌμ§‘λ‹ˆλ‹€. μ€‘μš”ν•œ μˆ˜μ • 사항은 λ³„λ„λ‘œ λ°±μ—…ν•˜κ±°λ‚˜ λ¬Έμ„œν™”ν•˜μ„Έμš”.

문제 ν•΄κ²°

OrderBySelectκ°€ μƒμ„±λ˜μ§€ μ•ŠμŒ

원인: λ°±μ—”λ“œμ— OrderBy enum이 μ •μ˜λ˜μ§€ μ•ŠμŒ ν•΄κ²°:

λ ˆμ΄λΈ”μ΄ ν•œκΈ€λ‘œ ν‘œμ‹œλ˜μ§€ μ•ŠμŒ

원인: sonamu.generated.tsκ°€ μž¬μƒμ„±λ˜μ§€ μ•ŠμŒ ν•΄κ²°:

선택해도 정렬이 μ μš©λ˜μ§€ μ•ŠμŒ

원인: λ°±μ—”λ“œ Modelμ—μ„œ orderBy 처리 λˆ„λ½ ν•΄κ²°: user.model.ts의 findManyμ—μ„œ params.orderByλ₯Ό μ²˜λ¦¬ν•˜μ„Έμš”.

κ΄€λ ¨ λ¬Έμ„œ