コンテンツにスキップ

133. hx-location(hx-location:滑らかなページ移動の指示:SPAらしさを損なわない「誘導」)

原理:スマートな「横移動」

リロードさせずに、別のURLへ

画面遷移をさせる際、hx-redirect (123.) を使うとページ全体が白くなり、リロードが発生してしまいます。これではせっかくの滑らかなHTMX体験(SPAらしさ)が途切れてしまいます。

「hx-location(エイチエックス・ロケーション)」ヘッダーは、「ページをリロードすることなく、HTMXの仕組みを使って、滑らかに別のURLの内容に入れ替える」ための高度な移動指示です。


実践:一段上の「画面遷移」を実現する

1. シンプルな移動指示

サーバーから移動先のパスを送ります。

/* サーバーからのレスポンス(ヘッダー) */
hx-location: /new-page
HTMXはこれを受けると、内部的に /new-page へリクエストを飛ばし、届いた結果を今のページの body(または指定先)に滑らかに貼り付けます。

2. 詳細なオプション付きの移動

「URLを変えつつ、ターゲットはこのIDにして、スクロールは一番上に戻して……」といった細かい指示をJSON形式で送ることも可能です。

/* サーバーからのレスポンス(ヘッダー) */
hx-location: { "path": "/item/123", "target": "#main", "swap": "innerHTML" }

3. ステップ・バイ・ステップ解説

  1. 「滑らかな移動」が必要な場面: ログイン成功後や、モーダルを閉じたあとの遷移など。
  2. ヘッダーの送信: サーバーで hx-location をセットします。
  3. URLバーの確認: 画面が切り替わると同時に、ブラウザのURLも正しく変わっているか確認します。

比較:hx-redirect vs hx-location

hx-redirect

  • 方法: ページ全体を強制リロードして移動。
  • 感覚: 昔ながらの「カチッ、真っ白、表示」という動き。
  • 用途: ログアウト、外部サイトへの移動など。

hx-location

  • 方法: HTMX経由で部分的に中身を入れ替えて移動。
  • 感覚: モダンなSPAの「シュッ」と中身が入れ替わる動き。
  • 用途: サイト内のページ遷移全般。

まとめ:初心者のための「シームレスな誘導」

hx-location を使いこなせれば、あなたのWebアプリはもはや「ページ集」ではなく、一つのつながった「体験」になります。

  • ユーザーを「現実に」戻さない: 通信中であることを感じさせず、コンテンツが次々と入れ替わっていく快感。これがユーザーをアプリに夢中にさせます。
  • URLと中身の一致: 自動的に hx-push-url と同じような効果が得られるため、URLの共有可能性(115.)も保たれます。
  • サーバー主導のSPA: 本物のSPA(Reactなど)を作らなくても、サーバーからこのヘッダーを出すだけで、同じ質の「滑らかさ」が手に入る。これこそがHTMXの最強のメリットです。

途切れない体験、終わらない対話。hx-location を使って、サーバー側から自由自在に、かつ最高にスムーズにユーザーを導く、洗練されたWebナビゲーションを完成させてください。次の記事では、URLバーだけをこっそり直す「hx-push-urlヘッダー(134. hx-push-url)」をご紹介します。