using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using blazor_lifetime.Models; namespace blazor_lifetime.Shared { public class AdvancedComponentBase : OwningComponentBase, IAsyncComponentBase { [Parameter] public virtual RenderFragment ChildContent { get; set; } public RenderHandleAsync RenderChildContentAsync { get; set; } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { await OnComponentMountAsync().ConfigureAwait(false); if (RenderChildContentAsync != null) { await RenderChildContentAsync(); } } else { await Task.CompletedTask; } } protected virtual Task OnComponentMountAsync() => Task.CompletedTask; } }