我正在尝试从 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 索引上。
如果您有任何想法,请提前致谢。