有没有办法在页面主体初始化之前进行布局初始化(异步)?
Is there a way to have the layout initialization(async) come before the page body initialization?
今天我对这个发现感到惊讶。 OnInitializedAsync()
上的 Blazor Layout 调用是在页面拥有 OnInitializedAsync()
之后调用的,当我想获取用户设置并将它们缓存在 localStorage
中时,这会带来问题,所以每个稍后的页面可以收集并适当地执行此设置。
应该是这样的吗?如果是,是否有任何解决方法可以使布局初始化在提交页面初始化之前结束?
或者还有另一种可能性,即:鉴于所有这些调用都是异步的(节省了用户设置的 localStorage
和 GET
),可能会有一个时间范围一项任务比另一项任务完成得更快。
如果您想保持相同的方法,那么您可以尝试使用 bool 来确定何时在布局中呈现 @body 标记。
例如:
@if(_isInitComplete)
{
@body
}
@code {
private bool _isInitComplete = false;
protected override async OnInitializedAnsyc()
{
// Do stuff
_isInitComplete = true;
}
}
最后我发现最好的地方是在身份验证步骤,我可以在那里接收这些额外的数据,将其保存到 localStorage
然后它可以安全地在每个授权页面上获得。
今天我对这个发现感到惊讶。 OnInitializedAsync()
上的 Blazor Layout 调用是在页面拥有 OnInitializedAsync()
之后调用的,当我想获取用户设置并将它们缓存在 localStorage
中时,这会带来问题,所以每个稍后的页面可以收集并适当地执行此设置。
应该是这样的吗?如果是,是否有任何解决方法可以使布局初始化在提交页面初始化之前结束?
或者还有另一种可能性,即:鉴于所有这些调用都是异步的(节省了用户设置的 localStorage
和 GET
),可能会有一个时间范围一项任务比另一项任务完成得更快。
如果您想保持相同的方法,那么您可以尝试使用 bool 来确定何时在布局中呈现 @body 标记。
例如:
@if(_isInitComplete)
{
@body
}
@code {
private bool _isInitComplete = false;
protected override async OnInitializedAnsyc()
{
// Do stuff
_isInitComplete = true;
}
}
最后我发现最好的地方是在身份验证步骤,我可以在那里接收这些额外的数据,将其保存到 localStorage
然后它可以安全地在每个授权页面上获得。