SolaraS
Solara2y ago
4 replies
kd

Unable to trigger re-render after updating reactive state

Hi.

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)


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.
308180931-1c3e554a-908e-417d-9ffa-60805325de25.png
Was this page helpful?