共通処理の書き方の作法がピンとこない
- アトムのような小さなパーツ(e.g.
raw icon()
)でもなく、 live_component
を使うほどでもない- また
content_tag
の入れ子で作るのがしんどい
結論
<.hoge name="foo" />
で呼び出すことで、~H
の形式で返せるヘルパー関数が作れる
- // 表現が怪しい
- 公式にそれっぽいサンプルがあった
<.my_link href="/" id={@id} new_window={true} class="my-class">Home</.my_link>
def my_link(assigns) do
target = if assigns[:new_window], do: "_blank", else: false
extra = assigns_to_attributes(assigns, [:new_window])
assigns =
assigns
|> Phoenix.LiveView.assign(:target, target)
|> Phoenix.LiveView.assign(:extra, extra)
~H"""
<a href={@href} target={@target} {@extra}>
<%= render_slot(@inner_block) %>
</a>
"""
end
参考にさせていただいた資料