Softknobs

Softknobs

Livecomponent: assign @value not available in eex template. Why such behaviour?

I have created a liveview with a child livecomponent (dialog). I was expecting to be able to define assigns in the child mount function but I get the error:

assign @value not available in eex template.
Please make sure all proper assigns have been set. If this
is a child template, ensure assigns are given explicitly by
the parent template as they are not automatically forwarded.

I was expecting this to work since I assign :value is in the mount function of the child component. Though, the error message suggests that the value has to be “forwarded” by the parent liveview in this case. If this is the case, I don’t understand what are the benefits of livecomponents since part of the logic still has to remain in the parent liveview with values passed to the child component when needed.

On the other hand, using two liveviews for this use case does not seem optimal as it would require the usage of PubSub. The latter seems to be more suited for broadcasting which is not something useful for simple component interactions (eg. show/hide).

Livecomponents examples I found just show simple use of them where one or two values are passed to the component but nothing with more complex livecomponents.

Thanks.

Marked As Solved

mindok

mindok

What have you tried to come to that conclusion. The docs (Phoenix.LiveComponent — Phoenix LiveView v1.2.5) discuss stateful components managing their own state.

You need to pass in an id in the assigns for a component to be stateful. I have only done a simple test - adding a button to a component that increments a counter when it is clicked. But I can have multiple instances of the same component on the same liveview tracking their own counter - I assume that’s what you mean by declaring their own internal values.

Also Liked

Softknobs

Softknobs

You are right and I did some more research and found an example where the live_component declares its own values:
https://github.com/phoenixframework/phoenix_live_view/issues/414

So it is possible and my conclusion was mostly based on the fact that there are not any examples of this usage.
The reason for which it didn’t work in my project was my fault. I copy pasted the mount definition from my LiveView in my component. However, there is a subtle difference in the mount function for the LiveView and the one for the LiveComponent.

LiveComponent:
def mount(socket) do

LiveView:
def mount(_session, socket) do

So my mount definition was wrong and the value was never added to the assigns.

Thanks to everyone who took the time to help me.

Where Next?

Trending in Questions Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
tj0
I’ve been following the steps here for the upgrade from 1.6 to 1.7 and it has gone relatively smoothly all the way till the phoenix_view ...
New
cgraham
Hi! What is currently the best library/method for parsing text and tabular data out of PDF files in Elixir or Erlang?
New
stefanchrobot
Hi, I need a way to handle data migrations in my application. I found an article by @wojtekmach about manual migrations: Automatic and ma...
New
stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
kip
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New
webofbits
Squid Mesh is an open source workflow automation runtime for Elixir applications. It is aimed at Phoenix and OTP apps that want to defin...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
kip
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New

We're in Beta

About us Mission Statement