import solara
import dataclasses
from solara.toestand import Ref
from input_numeric import InputNumeric
@dataclasses.dataclass
class MyData:
value: float = 10.
other_value: float = 20.
float_value = solara.reactive(42.0)
continuous_update = solara.reactive(True)
my_data = solara.reactive(MyData())
@solara.component
def Page():
ref = Ref(my_data.fields.value)
other_ref = Ref(my_data.fields.other_value)
solara.Checkbox(label="Continuous update", value=continuous_update)
InputNumeric("Other value in dataclass via ref", value=other_ref, continuous_update=continuous_update.value)
solara.InputFloat("Value in dataclass via ref", value=ref, continuous_update=continuous_update.value)
solara.InputFloat("Value in reactive", value=float_value, continuous_update=continuous_update.value)
with solara.Row():
solara.Button("Clear", on_click=lambda: float_value.set(42.0))
solara.Markdown(f"**You entered**: {float_value.value}")
# comment these out and the problem goes away:
solara.Text(str(my_data.value))
solara.Text(str(ref.value))
solara.Text(str(my_data.value.other_value))
solara.Text(str(type(my_data.value.other_value)))