Исходя из проблематики предыдующей статьи, у меня появились следующие наработки.
30% моих компонентов инициализируются через метод OnInitialized(), а все остальные 70% через оверрайдинг метода OnComponentMountAsync(). Такого метода не существует, но когда я поддержал его в своей компонентной базе, то перестал задумываться о проблемах с построением асинхронных кейсов внутри приложения.
В качестве основы я создал интерфейс IAsyncComponentBase.cs, который оговаривает, что компоненты, наследующие данный интерфейс имеет доступ к специальному делегату. Его вызов приводит к попытке перерендеривания страницы.
using System.Threading.Tasks;
namespace blazor_lifetime.Models
{
public delegate Task RenderHandleAsync();
public interface IAsyncContentRenderer
{
RenderHandleAsync RenderChildContentAsync { get; set; }
}
}