0

我正在尝试从 localStorage 异步恢复一些数据,然后如果找到数据,则从 MudTabs 组件激活特定选项卡。

<MudTabs Elevation="2" Rounded="true" Centered="true" Color="Color.Primary" ApplyEffectsToContainer="true" Class="custom-tab-panel" PanelClass="pa-6 bg-white" @ref="tabs">

问题来自我的方法 OnAfterRenderAsync 无法更新 MudBlazor 组件状态,这里是代码:

protected override async Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
        var result = await protectedSessionStore.GetAsync<int>("Call");
        if (result.Success)
        {
            tabs.ActivatePanel(1);
            StateHasChanged();
        }    
    }
    //return base.OnAfterRenderAsync(firstRender);
}

我测试了它的以前版本,它工作得很好,但我不能在其中使用 await 运算符,该方法不是异步的:

protected override Task OnAfterRenderAsync(bool firstRender)
{
    if (firstRender)
    {
        tabs.ActivatePanel(1);
    }
    return base.OnAfterRenderAsync(firstRender);
}

我没有发现返回基方法和调用 StateHasChanged 之间的具体区别。使用 StateHasChanged 方法时,活动面板保持在 0 索引上。

如果您有任何想法,请提前致谢。

4

0 回答 0