hx-swap-oobって何?

HTMXを使っています。調べつつ、私が覚えておきたいことを記録します。

hx-swap-oob は、サーバーのレスポンス側に付ける属性です。サーバーからのレスポンスに含めることでメインのターゲット以外の要素も同時に更新できます。

例えば、TODOアプリにおいて、TODOを追加した後にリスト本体と件数表示の両方を更新したいケースがあります。その際、サーバー側で次のようなレスポンスを返すように設定したとします。

<!-- サーバーからのレスポンス -->
<div id="todo-list">
  <!-- メインターゲットに入る新しいリスト -->
  <li>買い物</li>
  <li>掃除</li>
  <li>洗濯</li>
</div>

<span id="todo-count" hx-swap-oob="true">3件</span>

クライアント側は、hx-swap-oob="true" が付いた要素を受け取ると、ページ上でIDされたidを持つ要素を探して更新します。この例だと #todo-list がメインターゲットに入り、#todo-count はページ上の該当要素が差し替わります。

true の代わりに挿入方法を指定することもできます。hx-swap と同じ値が使えて、デフォルトは outerHTML です。

一つのリクエストでページの複数箇所を書き換えたいときに使います。例えば、通知バッジの更新、ナビゲーションの状態変更、フォーム送信後の複数箇所の反映など。

公式ドキュメントは以下にあります。

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

類似投稿

コメントを残す

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