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>
κ°μ μ΄λ²€νΈ μ΄λ¦, μ½λ‘ :
, μ€ν¬λ¦½νΈλ‘ ꡬμ±λ©λλ€:
<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>
onevent
μ²λΌ, μ΄λ²€νΈ νΈλ€λ¬ μ€ν¬λ¦½νΈμμ μ¬μ©ν μ μλ λ κ°μ§ κΈ°νΈκ° μμ΅λλ€:
this
- hx-on
μμ±μ΄ μ μλ μμevent
- νΈλ€λ¬λ₯Ό νΈλ¦¬κ±°ν μ΄λ²€νΈhx-on
μ μμλμ§ μμ΅λλ€. νμ§λ§ μ΄λ²€νΈ λ²λΈλ§μΌλ‘ μΈν΄,
λΆλͺ¨ μμμ hx-on
μμ±μ μμ μμμ μ΄λ²€νΈμ μν΄ νΈλ¦¬κ±°λ μ μμ΅λλ€.hx-on:*
κ³Ό hx-on
μ κ°μ μμμμ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
hx-on:*
μ΄ μ‘΄μ¬νλ κ²½μ°, λμΌν μμμ μλ hx-on
μμ±μ κ°μ 무μλ©λλ€. κ·Έλ¬λ λ ννλ λμΌν λ¬Έμμμ νΌν©νμ¬ μ¬μ©ν μ μμ΅λλ€.