Рубрики
Blazor

Упрощаем Lifetime Blazor приложения

Исходя из проблематики предыдующей статьи, у меня появились следующие наработки.

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; }
    }
}