有没有办法在页面主体初始化之前进行布局初始化(异步)?

Is there a way to have the layout initialization(async) come before the page body initialization?

今天我对这个发现感到惊讶。 OnInitializedAsync() 上的 Blazor Layout 调用是在页面拥有 OnInitializedAsync() 之后调用的,当我想获取用户设置并将它们缓存在 localStorage 中时,这会带来问题,所以每个稍后的页面可以收集并适当地执行此设置。

应该是这样的吗?如果是,是否有任何解决方法可以使布局初始化在提交页面初始化之前结束?

或者还有另一种可能性,即:鉴于所有这些调用都是异步的(节省了用户设置的 localStorageGET),可能会有一个时间范围一项任务比另一项任务完成得更快。

如果您想保持相同的方法,那么您可以尝试使用 bool 来确定何时在布局中呈现 @body 标记。

例如:

@if(_isInitComplete)
{
    @body
}


@code {
    private bool _isInitComplete = false;

    protected override async OnInitializedAnsyc()
    {
       // Do stuff
       _isInitComplete = true;
    }
}

最后我发现最好的地方是在身份验证步骤,我可以在那里接收这些额外的数据,将其保存到 localStorage 然后它可以安全地在每个授权页面上获得。