Unable to trigger re-render after updating reactive state
Hi.
I'm trying to render a dataframe using the following code:
But only the text field updates, and the dataframe tables don't. I believe it is because the page function isn't being re-rendered.
I'm trying to render a dataframe using the following code:
mnemonic = solara.reactive("PGDP")
sector = solara.reactive("ALBERTA")
error = solara.reactive(False)
error_message = solara.reactive("")
equation = solara.reactive("")
table1 = solara.reactive(pd.DataFrame())
table2 = solara.reactive(pd.DataFrame())
equations_df_reacton = solara.reactive(pd.DataFrame())
combined_data_df_reacton = solara.reactive(pd.DataFrame())
def on_change(_ = {}):
try:
equation.set(mypackage.get_equation(equations_df_reacton.value, mnemonic.value, sector.value))
df1, df2 = mypackage.create_two_tables(combined_data_df_reacton.value, equations_df_reacton.value, equation.value)
table1.set(df1)
table2.set(df2)
error.set(False)
error_message.set("")
except Exception as e:
error.set(True)
error_message.set(f"Error: {e}")
@solara.component
def Page(combined_data_df, equations_df):
combined_data_df_reacton.set(combined_data_df)
equations_df_reacton.set(equations_df)
on_change()
solara.Title(title = "MDL Data Explorer")
solara.AppBarTitle("MDL Data Explorer")
solara.Row(children = [
solara.InputText(label="Mnemonic", value = mnemonic, on_value=on_change, continuous_update=False),
solara.InputText(label="Sector", value = sector, on_value=on_change, continuous_update=False)
])
if error.value:
solara.Error(f"Unable to get equations for {mnemonic.value},{sector.value}. {error_message.value}")
else:
solara.Text(equation.value)
solara.DataFrame(table1.value, items_per_page=5)
solara.DataFrame(table2.value)mnemonic = solara.reactive("PGDP")
sector = solara.reactive("ALBERTA")
error = solara.reactive(False)
error_message = solara.reactive("")
equation = solara.reactive("")
table1 = solara.reactive(pd.DataFrame())
table2 = solara.reactive(pd.DataFrame())
equations_df_reacton = solara.reactive(pd.DataFrame())
combined_data_df_reacton = solara.reactive(pd.DataFrame())
def on_change(_ = {}):
try:
equation.set(mypackage.get_equation(equations_df_reacton.value, mnemonic.value, sector.value))
df1, df2 = mypackage.create_two_tables(combined_data_df_reacton.value, equations_df_reacton.value, equation.value)
table1.set(df1)
table2.set(df2)
error.set(False)
error_message.set("")
except Exception as e:
error.set(True)
error_message.set(f"Error: {e}")
@solara.component
def Page(combined_data_df, equations_df):
combined_data_df_reacton.set(combined_data_df)
equations_df_reacton.set(equations_df)
on_change()
solara.Title(title = "MDL Data Explorer")
solara.AppBarTitle("MDL Data Explorer")
solara.Row(children = [
solara.InputText(label="Mnemonic", value = mnemonic, on_value=on_change, continuous_update=False),
solara.InputText(label="Sector", value = sector, on_value=on_change, continuous_update=False)
])
if error.value:
solara.Error(f"Unable to get equations for {mnemonic.value},{sector.value}. {error_message.value}")
else:
solara.Text(equation.value)
solara.DataFrame(table1.value, items_per_page=5)
solara.DataFrame(table2.value)But only the text field updates, and the dataframe tables don't. I believe it is because the page function isn't being re-rendered.
