μ΄ μμλ htmxλ₯Ό μ¬μ©νμ¬ λΉλκΈ° μΈμ¦ ν ν° νλ¦μ ꡬννλ λ°©λ²μ 보μ¬μ€λλ€.
μ¬κΈ°μ μ¬μ©ν κΈ°μ μ htmx:confirm
μ΄λ²€νΈλ₯Ό μ¬μ©νμ¬ μμ²μ μ§μ°μν¬ μ μλ€λ μ μ νμ©ν©λλ€.
μ°μ , μΈμ¦ ν ν°μ΄ κ²μλ λκΉμ§ μμ²μ 보λ΄μ§ μμμΌ νλ λ²νΌμ μμ±ν©λλ€:
<button hx-post="/example" hx-target="next output">
An htmx-Powered button
</button>
<output>
--
</output>
λ€μμΌλ‘, auth
νλ‘λ―Έμ€(λΌμ΄λΈλ¬λ¦¬μμ λ°νλ)λ₯Ό μ²λ¦¬νκΈ° μν μ€ν¬λ¦½νΈλ₯Ό μΆκ°ν©λλ€:
<script>
// authλ μΈμ¦ μμ€ν
μμ λ°νλ νλ‘λ―Έμ€μ
λλ€.
// μΈμ¦ ν ν°μ λκΈ°νκ³ , μ΄λ₯Ό μ΄λμ μ μ₯ν©λλ€.
let authToken = null;
auth.then((token) => {
authToken = token
})
// μΈμ¦ ν ν°μ λ°λΌ htmx μμ²μ μ μ΄ν©λλ€.
htmx.on("htmx:confirm", (e)=> {
// μΈμ¦ ν ν°μ΄ μμ κ²½μ°
if(authToken == null) {
// μ κ· μμ²μ΄ λ°νλμ§ μλλ‘ λ§μ΅λλ€.
e.preventDefault()
// μΈμ¦ νλ‘λ―Έμ€κ° ν΄κ²°λ νμλ§ μμ²μ λ°νν©λλ€.
auth.then(() => e.detail.issueRequest())
}
})
// μμ²μ μΈμ¦ ν ν°μ ν€λλ‘ μΆκ°ν©λλ€.
htmx.on("htmx:configRequest", (e)=> {
e.detail.headers["AUTH"] = authToken
})
</script>
μ¬κΈ°μμλ κΈλ‘λ² λ³μλ₯Ό μ¬μ©νμ§λ§, localStorage
λ λ€λ₯Έ μ νΈνλ λ©μ»€λμ¦μ μ¬μ©νμ¬ μΈμ¦ ν ν°μ htmx:configRequest
μ΄λ²€νΈμ μ λ¬ν μλ μμ΅λλ€.
μ΄ μ½λλ₯Ό μ¬μ©νλ©΄ auth
νλ‘λ―Έμ€κ° ν΄κ²°λ λκΉμ§ htmxκ° μμ²μ λ°ννμ§ μμ΅λλ€.