LifeCycleHook
LifeCycleHook is a simple hook that logs each life-cycle step of LiveView.
It is good for learning Phoenix LiveView life-cycle.
Overview
:warning: Logging
handle_parmasstage with LifeCycleHook is not working with sticky nested LiveView.
By mounting LifeCycleHook on LiveView with use LifeCycleHook, you can see logs for each life-cycle.
defmodule MyApp.MyLive do
use Phoenix.LiveView
use LifeCycleHook
@impl true
def render(assigns) do
...
end
end[debug] Elixir.MyApp.MyLive mount with HTTP
[debug] Elixir.MyApp.MyLive handle_params with HTTP
[debug] Elixir.MyApp.MyLive mount with WebSocket
[debug] Elixir.MyApp.MyLive handle_params with WebSocket
If you want to choose specific stages to log, you can use only or except option in use LifeCycleHook.
defmodule MyApp.MyLive do
use Phoenix.LiveView
use LifeCycleHook, only: [:mount]
@impl true
def render(assigns) do
...
end
end[debug] Elixir.MyApp.MyLive mount with HTTP
[debug] Elixir.MyApp.MyLive mount with WebSocketInstallation
If available in Hex, the package can be installed
by adding life_cycle_hook to your list of dependencies in mix.exs:
def deps do
[
{:life_cycle_hook, "~> 0.4.0"}
]
endTO DO
-
Add
handle_paramshook -
Add macro that replace
on_mount({LifeCycleHook, __MODULE__}) -
Support nested LiveView with
sticky: trueoption -
Add
handle_eventhook -
Add
handle_infohook -
Support
only,exceptoptions inuse LifeCycleHook