hx-on

hx-on* 속성을 μ‚¬μš©ν•˜λ©΄ 슀크립트λ₯Ό 인라인으둜 μ‚½μž…ν•˜μ—¬ μš”μ†Œμ˜ μ΄λ²€νŠΈμ— 직접 응닡할 수 μžˆμŠ΅λ‹ˆλ‹€. onClickκ³Ό 같은 HTML의 onevent 속성과 μœ μ‚¬ν•©λ‹ˆλ‹€.

hx-on* 속성은 μž„μ˜μ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ 이벀트λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•˜μ—¬ λΉ„ν‘œμ€€ DOM 이벀트λ₯Ό μ²˜λ¦¬ν•  λ•Œμ—λ„ ν–₯μƒλœ Locality of Behaviour (LoB)λ₯Ό μ œκ³΅ν•¨μœΌλ‘œμ¨ oneventλ₯Ό κ°œμ„ ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ΄λŸ¬ν•œ 속성을 μ‚¬μš©ν•˜λ©΄ htmx eventsλ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

hx-on 속성을 μ‚¬μš©ν•˜λ©΄ 콜둠 뒀에 이벀트 이름을 속성 μ΄λ¦„μ˜ μΌλΆ€λ‘œ μ§€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 클릭 μ΄λ²€νŠΈμ— μ‘λ‹΅ν•˜λ €λ©΄ hx-on:click 속성을 μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€:

<div hx-on:click="alert('Clicked!')">Click</div>

이 ꡬ문은 ν‘œμ€€ DOM 이벀트 외에도 λͺ¨λ“  htmx μ΄λ²€νŠΈμ™€ λŒ€λΆ€λΆ„μ˜ λ‹€λ₯Έ μ‚¬μš©μž μ •μ˜ 이벀트λ₯Ό μΊ‘μ²˜ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•œ 가지 μ£Όμ˜ν•΄μ•Ό ν•  점은 DOM 속성은 λŒ€μ†Œλ¬Έμžλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 즉, μ•ˆνƒ€κΉκ²Œλ„ DOM은 속성 이름을 μ†Œλ¬Έμžλ‘œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— hx-on:htmx:beforeRequest와 같은 속성은 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€ν–‰νžˆλ„ htmxλŠ” camel 이벀트 이름과 kebab-case 이벀트 이름을 λͺ¨λ‘ μ§€μ›ν•˜λ―€λ‘œ λŒ€μ‹  hx-on:htmx:before-requestλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

htmx 기반 이벀트 ν•Έλ“€λŸ¬λ₯Ό μ’€ 더 μ‰½κ²Œ μž‘μ„±ν•˜λ €λ©΄ htmx μ΄λ²€νŠΈμ— 속기 이쀑 콜둠 hx-on::을 μ‚¬μš©ν•˜κ³  β€œhtmx” 뢀뢄을 μƒλž΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

<!-- μ•„λž˜ λ‘˜μ€ λ˜‘κ°™μŠ΅λ‹ˆλ‹€ -->
<button hx-get="/info" hx-on:htmx:before-request="alert('Making a request!')">
    Get Info!
</button>

<button hx-get="/info" hx-on::before-request="alert('Making a request!')">
    Get Info!
</button>

μ—¬λŸ¬ 개의 μ„œλ‘œ λ‹€λ₯Έ 이벀트λ₯Ό μ²˜λ¦¬ν•˜λ €λ©΄ μš”μ†Œμ— μ—¬λŸ¬ 개의 속성을 μΆ”κ°€ν•˜λ©΄ λ©λ‹ˆλ‹€:

<button hx-get="/info"
        hx-on::before-request="alert('Making a request!')"
        hx-on::after-request="alert('Done making a request!')">
    Get Info!
</button>

λ§ˆμ§€λ§‰μœΌλ‘œ 이 κΈ°λŠ₯을 HTML 속성에 콜둠(:)을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 일뢀 ν…œν”Œλ¦Ώ μ–Έμ–΄(예: JSX)와 ν˜Έν™˜λ˜λ„λ‘ ν•˜λ €λ©΄, κΈ΄ ν˜•μ‹κ³Ό 속기 ν˜•μ‹ λͺ¨λ‘μ— 콜둠 λŒ€μ‹  λŒ€μ‹œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€:

<!-- μ•„λž˜ λ‘˜μ€ λ˜‘κ°™μŠ΅λ‹ˆλ‹€ -->
<button hx-get="/info" hx-on-htmx-before-request="alert('Making a request!')">
    Get Info!
</button>

<button hx-get="/info" hx-on--before-request="alert('Making a request!')">
    Get Info!
</button>

hx-on (μ‚¬μš© 쀑단됨)

값은 이벀트 이름, 콜둠 :, 슀크립트둜 κ΅¬μ„±λ©λ‹ˆλ‹€:

<button hx-get="/info" hx-on="htmx:beforeRequest: alert('Making a request!')">
    Get Info!
</button>

μ—¬λŸ¬ ν•Έλ“€λŸ¬λŠ” μƒˆ 쀄에 μž‘μ„±ν•˜μ—¬ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

<button hx-get="/info" hx-on="htmx:beforeRequest: alert('Making a request!')
                              htmx:afterRequest: alert('Done making a request!')">
    Get Info!
</button>

Symbols

onevent처럼, 이벀트 ν•Έλ“€λŸ¬ μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” 두 가지 κΈ°ν˜Έκ°€ μžˆμŠ΅λ‹ˆλ‹€:

Notes