hx-sync

hx-sync 속성은 μ—¬λŸ¬ μš”μ†Œ κ°„μ˜ AJAX μš”μ²­μ„ 동기화할 수 있게 ν•©λ‹ˆλ‹€.

hx-sync 속성은 동기화할 μš”μ†Œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” CSS μ„ νƒμžλ‘œ κ΅¬μ„±λ˜λ©°, μ„ νƒμ μœΌλ‘œ 콜둠 뒀에 동기화 μ „λž΅μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš© κ°€λŠ₯ν•œ μ „λž΅μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

queue μˆ˜μ •μžλŠ” λŒ€κΈ° 방법을 μ •ν™•νžˆ μ§€μ •ν•˜λŠ” μΆ”κ°€ 인수λ₯Ό κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€:

Notes

이 μ˜ˆμ œλŠ” form의 제좜 μš”μ²­κ³Ό κ°œλ³„ μž…λ ₯ 검증 μš”μ²­ κ°„μ˜ 경쟁 쑰건을 ν•΄κ²°ν•©λ‹ˆλ‹€. hx-syncλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ input을 μ±„μš°κ³  form을 μ¦‰μ‹œ μ œμΆœν•  λ•Œ /validate와 /store둜 두 개의 병렬 μš”μ²­μ΄ νŠΈλ¦¬κ±°λ©λ‹ˆλ‹€. input에 hx-sync="closest form:abort"λ₯Ό μ‚¬μš©ν•˜λ©΄ formμ—μ„œ μš”μ²­μ„ κ°μ‹œν•˜κ³ , form μš”μ²­μ΄ μ‘΄μž¬ν•˜κ±°λ‚˜ input μš”μ²­μ΄ 진행 쀑일 λ•Œ μ‹œμž‘λ˜λ©΄ input μš”μ²­μ„ μ€‘λ‹¨ν•©λ‹ˆλ‹€.

<form hx-post="/store">
    <input id="title" name="title" type="text" 
        hx-post="/validate" 
        hx-trigger="change"
        hx-sync="closest form:abort">
    <button type="submit">Submit</button>
</form>

검증 μš”μ²­μ„ 제좜 μš”μ²­λ³΄λ‹€ μš°μ„ μ‹œν•˜λ €λ©΄ drop μ „λž΅μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ˜ˆμ œλŠ” 검증 μš”μ²­μ΄ 진행 쀑인 경우 form을 μ œμΆœν•  수 없도둝 검증 μš”μ²­μ„ 제좜 μš”μ²­λ³΄λ‹€ μš°μ„ μ‹œν•©λ‹ˆλ‹€.

<form hx-post="/store">
    <input id="title" name="title" type="text" 
        hx-post="/validate" 
        hx-trigger="change"
        hx-sync="closest form:drop"
    >
    <button type="submit">Submit</button>
</form>

λ§Žμ€ μž…λ ₯을 ν¬ν•¨ν•˜λŠ” form을 λ‹€λ£° λ•Œ, form νƒœκ·Έμ— hx-sync replace μ „λž΅μ„ μ‚¬μš©ν•˜μ—¬ 제좜 μš”μ²­μ„ λͺ¨λ“  μž…λ ₯ 검증 μš”μ²­λ³΄λ‹€ μš°μ„ μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 진행 쀑인 λͺ¨λ“  검증 μš”μ²­μ„ μ·¨μ†Œν•˜κ³  hx-post="/store" μš”μ²­λ§Œ μˆ˜ν–‰ν•©λ‹ˆλ‹€. 제좜 μš”μ²­μ„ μ€‘λ‹¨ν•˜κ³  κΈ°μ‘΄ 검증 μš”μ²­μ„ μš°μ„ μ‹œν•˜λ €λ©΄ form νƒœκ·Έμ— hx-sync="this:abort" μ „λž΅μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

<form hx-post="/store" hx-sync="this:replace">
    <input id="title" name="title" type="text" hx-post="/validate" hx-trigger="change" />
    <button type="submit">Submit</button>
</form>

ν™œμ„± 검색 κΈ°λŠ₯을 κ΅¬ν˜„ν•  λ•Œ hx-trigger μ†μ„±μ˜ delay μˆ˜μ •μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ μž…λ ₯을 debounceν•˜κ³  μ‚¬μš©μžκ°€ μž…λ ₯ν•˜λŠ” λ™μ•ˆ μ—¬λŸ¬ μš”μ²­μ„ ν•˜μ§€ μ•Šλ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν•œ 번 μš”μ²­μ΄ 이루어지면 이전 μš”μ²­μ΄ μ™„λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ μ‚¬μš©μžκ°€ λ‹€μ‹œ μž…λ ₯을 μ‹œμž‘ν•˜λ©΄ μƒˆ μš”μ²­μ΄ μ‹œμž‘λ©λ‹ˆλ‹€. 이 μ˜ˆμ œμ—μ„œλŠ” 진행 쀑인 μš”μ²­μ„ μ·¨μ†Œν•˜κ³  λ§ˆμ§€λ§‰ μš”μ²­λ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€. 검색 μž…λ ₯이 λŒ€μƒμ— ν¬ν•¨λœ 경우, μ΄λ ‡κ²Œ hx-syncλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžκ°€ μž…λ ₯ν•˜λŠ” λ™μ•ˆ μž…λ ₯이 ꡐ체될 κ°€λŠ₯성을 μ€„μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€.

<input type="search" 
    hx-get="/search" 
    hx-trigger="keyup changed delay:500ms, search" 
    hx-target="#search-results"
    hx-sync="this:replace">