これらの違いについてもやもやしていましたが、Jose Valimさんの分かりやすい解説を見つけたので、要点を整理します。
コツ
- LiveViewでページ移動する場合、基本的に
live_redirect/2
(ブラウザ側)とpush_redirect/2
(サーバ側)使う。 - 同じLiveView内でページ移動時にサーバから送るデータを最小限にしたい場合のみにpatchヘルパー(
live_patch/2
、push_patch/2
)の使用を検討する。(例:テーブルのソート)
どうリロードされるか
link/2
- フルリロード
redirect/2
- フルリロード
live_redirect/2
(ブラウザ側) & push_redirect/2
(サーバ側)
- LiveViewはリロードされるが、 使用中のレイアウトはそのまま。
-
mount
が呼ばれる。
live_patch/2
(ブラウザ側)& push_patch/2
(サーバ側)
- 使用中のLiveViewが最小限の差分のみ更新される。
-
mount
は呼ばれない。 - 別のLiveViewsにpatchすることはできないが、仮にもし別のLiveViewにpatchしようとしたら、フォールバックとしてredirectされる。
以上