コンテンツにスキップ

132. hx-refresh(hx-refresh:サーバーから「リロード」を命じる:最終手段の潔い再起動)

原理:画面を「真っさら」に戻す合図

部分更新では追いつかない時のために

HTMXの魅力はページをリロードしないことですが、時には「あ、これはもう一度最初から読み込み直したほうが早いし正確だ」という場面があります。 - ユーザーがログアウトした時。 - システムに重大なエラーが起き、全てを初期化したい時。 - 設定が大幅に変わり、ページ全体のレイアウトを再構築したい時。

「hx-refresh(エイチエックス・リフレッシュ)」ヘッダーは、「今すぐページ全体をリロード(再読み込み)せよ!」という強力な命令をサーバーからブラウザ(HTMX)へ送るためのものです。


実践:問答無用のリセットを実装する

1. サーバーからリロードを指示する

レスポンスヘッダーに hx-refresh: true を含めるだけです。

/* サーバーからのレスポンス(ヘッダー) */
hx-refresh: true

2. ブラウザの反応

このヘッダーが届いた瞬間、HTMXは現在行っている部分的なHTMLの差し替えをすべてキャンセルし、現在のURLに対して window.location.reload()(ブラウザのリロードボタンを押したのと同じ動作)を実行します。

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

  1. 「やり直し」が必要な瞬間を決める: 成功したら移動……ではなく「成功したらリロード」という場面(例:言語設定の変更など)を探します。
  2. ヘッダーの送信: サーバープログラムでこのヘッダーをセットします。
  3. 確認: ボタンを押したあと、画面全体が一度リセットされ、新しく読み込み直されることを確認します。

比較:hx-redirect vs hx-refresh

hx-redirect (123.)

  • 挙動: 別のURLへ移動させる。
  • 用途: 処理が終わって「別のページ」に行かせたい時。

hx-refresh (今回)

  • 挙動: 今のURLで再読み込みさせる。
  • 用途: 処理が終わって「今のページ」を完全に新しくしたい時。

まとめ:初心者のための「最強のリセット」

hx-refresh は、複雑になりがちな部分更新のコードを、一瞬でシンプルにする「魔法の言葉」です。

  • 悩んだらリロード: 「ここの更新が難しいな……」と悩んで時間を溶かすくらいなら、思い切って hx-refresh でページ全体を読み込み直してしまいましょう。その潔さが、バグのない安定したアプリに繋がります。
  • ログアウトの鉄則: ログアウト処理では、古いセッションデータが画面に残らないよう、必ずリダイレクトかリフレッシュを行い、ページを完全に「掃除」しましょう。
  • ユーザー体験への配慮: ページ全体がリロードされると、読み込みの待ち時間が発生します。乱用はせず、ここぞという時の「最後の一手」として使いましょう。

一瞬の静寂、そして再開。hx-refresh という強力なリセットボタンをサーバー側に持っておくことで、どんな状況からでもユーザーを正しい初期状態へと導ける、タフで確実なWebアプリを実現してください。次の記事では、よりスマートな移動の指示「hx-location(133. hx-location)」をご紹介します。