@inject UserDataProvider UserDataProvider
@implements IDisposable
@if (state == null) {
loading...
} else {
@ChildContent
}
@code{
private UserData state = null;
[Parameter]
public RenderFragment ChildContent { get; set; }
protected override async Task OnInitializedAsync() {
UserDataProvider.Changed += UserDataChanged;
await Refresh();
}
public void Dispose() {
UserDataProvider.Changed -= UserDataChanged;
}
private async void UserDataChanged(object sender, EventArgs e) {
await InvokeAsync(async () => {
await Refresh();
StateHasChanged();
});
}
private async Task Refresh() {
state = await UserDataProvider.Get();
}
}