Рубрики
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; }
    }
}
Рубрики
Blazor

Проблемы асинхронного лайфтайма Blazor

За долгое время работы с Blazor, начиная с самых ранних сборок и заканчивая .NET Core 3.1.0 мне пришлось достаточно детально рассмотреть процесс взаимодействия с этим фреймом.

И наверно самым главным элементом в данной тематике можно выделить лайфтайм компонента ComponentBase. Если вы хоть раз заглядывали в этот абстрактный интерфейс, то вы наверняка знаете про три метода и три асинхронные перегрузки этих методов. (OnInitialized, OnParametersSet, OnAfterRender).

Не заглядывая в документацию можно с легкостью ответить, за что ответственен каждый из этих методов.