在 Blazor 服务器组件中,我用于OnInitializedAsync()
连接来自注入服务的事件:
protected override async Task OnInitializedAsync()
{
_fooRepository.SomethingChanged += OnSomethingChanged;
await Refresh();
}
public void Dispose()
{
_fooRepository.SomethingChanged -= OnSomethingChanged;
}
private async Task Refresh()
{
this.FooData = await LoadDataFromRepository();
}
不幸的是,根据文档,该OnInitializedAsync
方法可能会被调用两次,具体取决于渲染模式。
我发现了一些建议OnAfterRenderAsync
用于初始化逻辑的示例:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
_fooRepository.SomethingChanged += OnSomethingChanged;
await Refresh();
}
}
[... Dispose and Refresh as above... ]
使用OnAfterRenderAsync
代替时有缺点OnInitializedAsync
吗?在我看来,我应该放弃OnInitializedAsync
并默认OnAfterRenderAsync
改为。