View Source Love.Events behaviour (love_ex v0.2.0)
Send and receive event messages between views and components.
The use Love.View
and use Love.Component
macros automatically use this behaviour.
Link to this section Summary
Callbacks
Handle an event message sent by Love.Component.emit/3
or send_message/4
.
Functions
Sends an event message to a Love.View
or a Love.Component
.
Link to this section Types
Link to this section Callbacks
@callback handle_message( name :: atom(), source :: any(), payload :: any(), socket :: LiveView.Socket.t() ) :: socket :: LiveView.Socket.t()
Handle an event message sent by Love.Component.emit/3
or send_message/4
.
When sent from a component via Love.Component.emit/3
, the source
takes the form {module, id}
.
example
Example
# Emitted from a component
def handle_message(:on_selected, {MyComponent, _id}, %{profile_id: profile_id}, socket), do: ...
Link to this section Functions
@spec send_message( destination :: destination(), name :: atom(), payload :: any(), opts :: keyword() ) :: :ok
Sends an event message to a Love.View
or a Love.Component
.
To send to a Love.View
(or any other process), specify a pid
(usually self()
) as the destination
.
To send to a Love.Component
, specify {module, id}
as the destination
.
It can be handled by the Love.Events.handle_message/4
callback.
When sending to an arbitrary process, the message will be an Love.Events.Message
struct.
options
Options
:source
- where the event originated from; defaults tonil
examples
Examples
send_message(self(), :on_selected, %{profile_id: 123})
# => def handle_message(:on_selected, _source, %{profile_id: id}, socket), do: ...
send_message({MyComponent, "my-id"}, :on_selected, %{profile_id: 123})
# => def handle_message(:on_selected, _source, %{profile_id: id}, socket), do: ...