今天我被这个发现惊呆了。对OnInitializedAsync()
的Blazor Layout调用是在Pages拥有OnInitializedAsync()
之后调用的,例如,当我想获取用户设置并将其缓存在localStorage
中时,就会出现问题,这样以后每个页面都可以收集并根据这些设置采取适当的行动。
应该是这样吗?如果是,是否有任何变通方法可以使布局初始化在提交页面初始化之前结束?
或者还有另一种可能性,那就是:假设所有这些调用都是异步的(同时节省了用户设置的localStorage
和GET
(,可能会有一个时间段,其中一个任务比另一个任务完成得更快。
如果您想保持相同的方法,那么您可以尝试使用bool来确定何时在布局中呈现@body标记。
例如:
@if(_isInitComplete)
{
@body
}
@code {
private bool _isInitComplete = false;
protected override async OnInitializedAnsyc()
{
// Do stuff
_isInitComplete = true;
}
}
我最终发现,最好的地方是在身份验证步骤,在那里我可以接收这些额外的数据,将其保存到localStorage
,然后可以安全地在每个授权页面上获取。