Skip to main content
Sonamu의 Search Input μ»΄ν¬λ„ŒνŠΈλ‘œ μ‹€μ‹œκ°„ 검색과 μžλ™μ™„μ„± κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 방법을 μ•Œμ•„λ΄…λ‹ˆλ‹€.

Search Input κ°œμš”

μ‹€μ‹œκ°„ 검색

νƒ€μ΄ν•‘ν•˜λ©΄μ„œ 검색 즉각적인 κ²°κ³Ό

μžλ™μ™„μ„±

μΆ”μ²œ 검색어 λΉ λ₯Έ 선택

λ””λ°”μš΄μŠ€

API 호좜 μ΅œμ ν™” λΆˆν•„μš”ν•œ μš”μ²­ 제거

ν•˜μ΄λΌμ΄νŒ…

검색어 κ°•μ‘° 가독성 ν–₯상

Search Inputμ΄λž€?

문제: κΈ°λ³Έ κ²€μƒ‰μ˜ ν•œκ³„

κΈ°λ³Έ HTML <input type="search">λŠ” 검색 λ²„νŠΌμ„ λˆŒλŸ¬μ•Όλ§Œ 검색이 μ‹€ν–‰λ©λ‹ˆλ‹€.
문제점:
  1. λ²„νŠΌ 클릭 ν•„μš”: μ—”ν„°ν‚€λ‚˜ λ²„νŠΌμ„ λˆŒλŸ¬μ•Όλ§Œ 검색
  2. ν”Όλ“œλ°± μ§€μ—°: κ²°κ³Όλ₯Ό 보렀면 검색 μ‹€ν–‰ ν•„μš”
  3. μžλ™μ™„μ„± μ—†μŒ: μ‚¬μš©μžκ°€ λͺ¨λ“  것을 타이핑해야 함
  4. μ˜€νƒ€ μˆ˜μ • 어렀움: κ²°κ³Όλ₯Ό 보기 μ „κΉŒμ§€ μ˜€νƒ€ 발견 λΆˆκ°€

ν•΄κ²°: Search Input μ»΄ν¬λ„ŒνŠΈ

Sonamu의 Search Input은 νƒ€μ΄ν•‘ν•˜λ©΄μ„œ μ‹€μ‹œκ°„μœΌλ‘œ κ²€μƒ‰ν•˜κ³  μžλ™μ™„μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
μž₯점:
  1. ✨ 즉각적인 ν”Όλ“œλ°±: νƒ€μ΄ν•‘ν•˜λ©΄μ„œ κ²°κ³Ό 확인
  2. ✨ μžλ™μ™„μ„±: μΆ”μ²œ κ²€μƒ‰μ–΄λ‘œ λΉ λ₯Έ μž…λ ₯
  3. ✨ λ””λ°”μš΄μŠ€: λΆˆν•„μš”ν•œ API 호좜 μ΅œμ†Œν™”
  4. ✨ ν‚€λ³΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜: λ°©ν–₯ν‚€λ‘œ μ œμ•ˆ ν•­λͺ© 선택

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

λ‹¨μˆœ 검색

κ°€μž₯ 기본적인 검색 κΈ°λŠ₯μž…λ‹ˆλ‹€.

μžλ™μ™„μ„± 포함

μ œμ•ˆ ν•­λͺ©μ„ ν‘œμ‹œν•©λ‹ˆλ‹€.

Service와 톡합

Sonamu Serviceλ₯Ό μ‚¬μš©ν•˜μ—¬ κ²€μƒ‰ν•©λ‹ˆλ‹€.

κ³ κΈ‰ κΈ°λŠ₯

엔티티별 검색

νŠΉμ • μ—”ν‹°ν‹°λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

필터와 톡합

검색어와 ν•¨κ»˜ ν•„ν„°λ₯Ό μ μš©ν•©λ‹ˆλ‹€.

검색 νžˆμŠ€ν† λ¦¬

졜근 검색어λ₯Ό μ €μž₯ν•˜κ³  ν‘œμ‹œν•©λ‹ˆλ‹€.

ν•˜μ΄λΌμ΄νŒ…

검색어λ₯Ό κ²°κ³Όμ—μ„œ κ°•μ‘° ν‘œμ‹œν•©λ‹ˆλ‹€.

μ»€μŠ€ν…€ Hook νŒ¨ν„΄

useSearch Hook

검색 λ‘œμ§μ„ μž¬μ‚¬μš© κ°€λŠ₯ν•œ Hook으둜 μΆ”μƒν™”ν•©λ‹ˆλ‹€.
μ‚¬μš©:

useSearchSuggestions Hook

μžλ™μ™„μ„± μ œμ•ˆμ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

μ‹€μ „ 예제

κΈ€λ‘œλ²Œ 검색

μ‚¬μ΄νŠΈ 전체λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

λ„€λΉ„κ²Œμ΄μ…˜ 검색

헀더에 ν†΅ν•©λœ κ²€μƒ‰μž…λ‹ˆλ‹€.

μ„±λŠ₯ μ΅œμ ν™”

λ””λ°”μš΄μŠ€ μ΅œμ ν™”

검색 λΉˆλ„μ— 따라 λ””λ°”μš΄μŠ€ μ‹œκ°„μ„ μ‘°μ •ν•©λ‹ˆλ‹€.

캐싱 μ „λž΅

TanStack Query둜 검색 κ²°κ³Όλ₯Ό μΊμ‹±ν•©λ‹ˆλ‹€.

μš”μ²­ μ·¨μ†Œ

μ»΄ν¬λ„ŒνŠΈ μ–Έλ§ˆμš΄νŠΈ μ‹œ μ§„ν–‰ 쀑인 μš”μ²­μ„ μ·¨μ†Œν•©λ‹ˆλ‹€.

μ£Όμ˜μ‚¬ν•­

Search Input μ‚¬μš© μ‹œ μ£Όμ˜μ‚¬ν•­: 1. λ””λ°”μš΄μŠ€ ν•„μˆ˜: 300500ms ꢌμž₯ 2. μ΅œμ†Œ 검색 길이 μ„€μ • (보톡 23자) 3. 빈 λ¬Έμžμ—΄ 처리: λͺ¨λ“  κ²°κ³Ό λ°˜ν™˜ λ°©μ§€ 4. ν‚€λ³΄λ“œ λ„€λΉ„κ²Œμ΄μ…˜ 지원 (μ ‘κ·Όμ„±) 5. 검색 APIλŠ” 인덱슀 μ΅œμ ν™” ν•„μˆ˜ 6. κ²°κ³Όκ°€ 많으면 νŽ˜μ΄μ§€λ„€μ΄μ…˜ κ³ λ €

λ‹€μŒ 단계

ID Async Select

관계 데이터 선택

μ»€μŠ€ν…€ μ»΄ν¬λ„ŒνŠΈ

μ»΄ν¬λ„ŒνŠΈ μ»€μŠ€ν„°λ§ˆμ΄μ§•

View Scaffolding

μžλ™ λ·° 생성

TanStack Query Hook

데이터 캐싱