Skip to main content
useSelection은 λͺ©λ‘ νŽ˜μ΄μ§€μ—μ„œ μ²΄ν¬λ°•μŠ€λ₯Ό ν†΅ν•œ 닀쀑 선택을 κ΄€λ¦¬ν•˜λŠ” ν›…μž…λ‹ˆλ‹€. Shift+클릭 λ²”μœ„ 선택, 전체 선택/ν•΄μ œ λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

핡심 κΈ°λŠ₯

닀쀑 선택

κ°œλ³„/전체 선택 관리Set 기반 효율적 μƒνƒœ

λ²”μœ„ 선택

Shift+클릭 μ§€μ›μ—°μ†λœ ν•­λͺ© ν•œλ²ˆμ— 선택

μžλ™ 검증

νŽ˜μ΄μ§€ λ³€κ²½ μ‹œ μžλ™ μ •λ¦¬μ‘΄μž¬ν•˜λŠ” ν•­λͺ©λ§Œ μœ μ§€

νƒ€μž… μ•ˆμ „

μ œλ„€λ¦­ νƒ€μž… 지원any νƒ€μž… ν‚€ μ‚¬μš© κ°€λŠ₯

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

Import 및 μ΄ˆκΈ°ν™”

νŒŒλΌλ―Έν„° μ„€λͺ…:
  • allIds: ν˜„μž¬ νŽ˜μ΄μ§€μ˜ λͺ¨λ“  ν‚€ λ°°μ—΄ (예: [1, 2, 3, 4, 5])
  • defaultSelectedKeys: 초기 선택 μƒνƒœ (선택 사항, κΈ°λ³Έκ°’: [])

κ°œλ³„ ν•­λͺ© 선택

λ™μž‘:
  • getSelected(key): ν•΄λ‹Ή ν‚€κ°€ μ„ νƒλ˜μ—ˆμœΌλ©΄ true, μ•„λ‹ˆλ©΄ false
  • toggle(key): 선택 μƒνƒœλ₯Ό λ°˜λŒ€λ‘œ λ³€κ²½

전체 선택/ν•΄μ œ

λ™μž‘:
  • isAllSelected: ν˜„μž¬ νŽ˜μ΄μ§€μ˜ λͺ¨λ“  ν•­λͺ©μ΄ μ„ νƒλ˜μ—ˆλŠ”μ§€
  • selectAll(): ν˜„μž¬ νŽ˜μ΄μ§€μ˜ λͺ¨λ“  ν•­λͺ© 선택
  • deselectAll(): λͺ¨λ“  선택 ν•΄μ œ

Shift+클릭 λ²”μœ„ 선택

λ™μž‘:
  1. 일반 클릭: κ°œλ³„ ν•­λͺ© 선택/ν•΄μ œ
  2. Shift+클릭: λ§ˆμ§€λ§‰ 선택 μœ„μΉ˜λΆ€ν„° ν˜„μž¬ μœ„μΉ˜κΉŒμ§€ λͺ¨λ‘ 선택
Shift+클릭 λ™μž‘ 원리handleCheckboxClick은 λ§ˆμ§€λ§‰ 클릭 인덱슀λ₯Ό κΈ°μ–΅ν•˜κ³ , Shift+클릭 μ‹œ κ·Έ μ‚¬μ΄μ˜ λͺ¨λ“  ν•­λͺ©μ„ μ„ νƒν•©λ‹ˆλ‹€.

μ‹€μ „ 예제

μ™„μ „ν•œ ν…Œμ΄λΈ” κ΅¬ν˜„

νŽ˜μ΄μ§€ λ³€κ²½ μ‹œ μžλ™ 검증

useSelection은 allIdsκ°€ λ³€κ²½λ˜λ©΄ μžλ™μœΌλ‘œ 선택 μƒνƒœλ₯Ό κ²€μ¦ν•©λ‹ˆλ‹€.
검증 둜직:
μ™œ μžλ™ 검증이 ν•„μš”ν•œκ°€μš”?νŽ˜μ΄μ§€λ₯Ό λ„˜κΈ°κ±°λ‚˜ ν•„ν„°λ₯Ό λ³€κ²½ν•˜λ©΄ rowsκ°€ λ°”λ€λ‹ˆλ‹€. 이전 νŽ˜μ΄μ§€μ—μ„œ μ„ νƒν•œ ν•­λͺ©μ΄ μƒˆ νŽ˜μ΄μ§€μ— 없을 수 μžˆμœΌλ―€λ‘œ, μžλ™μœΌλ‘œ μœ νš¨ν•˜μ§€ μ•Šμ€ 선택을 μ œκ±°ν•©λ‹ˆλ‹€.

μ„ νƒλœ ν•­λͺ©μœΌλ‘œ μž‘μ—…

κ³ κΈ‰ μ‚¬μš©

초기 선택 μƒνƒœ

선택 μƒνƒœ μ €μž₯

쑰건뢀 선택 μ œν•œ

λ‚΄λΆ€ ꡬ쑰

useSelection은 Map<T, boolean> ꡬ쑰둜 선택 μƒνƒœλ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
Map을 μ‚¬μš©ν•˜λŠ” 이유:
  • O(1) μ‹œκ°„ λ³΅μž‘λ„λ‘œ λΉ λ₯Έ 쑰회
  • ν‚€μ˜ νƒ€μž… μ œμ•½ μ—†μŒ (number, string, object λͺ¨λ‘ κ°€λŠ₯)
  • Set보닀 ν™•μž₯μ„± λ†’μŒ (μΆ”κ°€ 메타데이터 μ €μž₯ κ°€λŠ₯)

νƒ€μž… μ•ˆμ „μ„±

useSelection은 μ œλ„€λ¦­μœΌλ‘œ ν‚€ νƒ€μž…μ„ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

1. allIdsλŠ” λ°˜λ“œμ‹œ 제곡

2. νŽ˜μ΄μ§€ λ³€κ²½ μ‹œ 선택 μœ μ§€ν•˜κ³  μ‹Άλ‹€λ©΄

기본적으둜 νŽ˜μ΄μ§€λ₯Ό λ„˜κΈ°λ©΄ 선택이 μ΄ˆκΈ°ν™”λ©λ‹ˆλ‹€. μœ μ§€ν•˜λ €λ©΄ 별도 관리가 ν•„μš”ν•©λ‹ˆλ‹€.

3. handleCheckboxClick μ‚¬μš© μ‹œ 주의

handleCheckboxClick은 <td>λ‚˜ μ²΄ν¬λ°•μŠ€ μ»¨ν…Œμ΄λ„ˆμ— μ—°κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

κ΄€λ ¨ λ¬Έμ„œ