hx-swapって何?

HTMXを使っています。使いつつ調べたことを記録します。

HTMXを使っていてサーバーからのレスポンスを挿入する方法を調整したい際、hx-swapを利用できます。以下が使用例です。

<div id="messages">
  <p>既存のメッセージ</p>
</div>

<button hx-get="/new-message" hx-target="#messages" hx-swap="beforeend">
  新しいメッセージを追加
</button>

この例では、レスポンスが #messages の末尾に追加されていきます。

指定できる値は以下のようなものがあります。

  • innerHTML — ターゲットの中身を置き換える(デフォルト)
  • outerHTML — ターゲット要素ごと置き換える
  • beforebegin — ターゲットの直前に挿入
  • afterbegin — ターゲットの先頭に挿入
  • beforeend — ターゲットの末尾に挿入
  • afterend — ターゲットの直後に挿入
  • delete — ターゲットを削除(レスポンスは無視)
  • none — 何もしない

さらに、スペース区切りで修飾子を追加し、挿入方法を制御できます。例えば hx-swap="innerHTML swap:300ms" とすると、300msの遅延を追加できます。hx-swap="innerHTML scroll:top" でスワップ後にスクロール位置を調整できます。transition:true を付ければView Transitionsを使ったアニメーションを追加できます。

公式ドキュメントは以下です。

https://htmx.org/attributes/hx-swap

類似投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です