Copy & Paste Engineer

【Elixir】Phoenix LiveViewのライブナビゲーションイベント

Phoenix LiveViewのライブナビゲーションイベント

Phoenix LiveViewを活用することで、リアルタイムのページナビゲーションを実現できます。ライブナビゲーションイベントの仕組みとその実装方法について詳しく解説します。

ライブナビゲーションイベントとは?

Phoenix LiveViewのライブナビゲーションイベントは、ページの読み込み状況をリアルタイムで監視し、必要に応じてローディングインジケーターを表示するための機能です。以下の2つのイベントを使用します。

これらのイベントは、ナビゲーションの種類や目的に応じて適切にハンドリングされます。

イベントの詳細情報

各イベントには、以下のような詳細情報が含まれます。

実装例

ページの読み込み中にローディングバーを表示するには、以下のコードを使用します。

window.addEventListener("phx:page-loading-start", info => console.log("phx:page-loading-start", info));
window.addEventListener("phx:page-loading-stop", info => console.log("phx:page-loading-stop", info));
window.addEventListener("phx:navigate", info => console.log("phx:navigate", info));

ライブナビゲーションの詳細な実装方法

ライブナビゲーションは、クライアントサイドおよびサーバーサイドから実装できます。

クライアントサイド

クライアントサイドでは、リンクにpatch={url}またはnavigate={url}を渡すことでナビゲーションを実行します:

<.link patch={~p"/pages/#{@page + 1}"}>Next</.link>

サーバーサイド

サーバーサイドでは、Phoenix.LiveView.push_patch/2またはPhoenix.LiveView.push_navigate/2を使用します:

{:noreply, push_patch(socket, to: ~p"/pages/#{@page + 1}")}

ベストプラクティス

まとめ

Phoenix LiveViewのライブナビゲーションイベントを使用することで、ユーザーエクスペリエンスを向上させることができます。

参考

Live navigation events