Это компонент меню, который находится в MainLayout. Теги H5 появляются и исчезают в мгновение ока, а затем через 4 секунды. Он загружается снова. Кто-нибудь сталкивался с такой же проблемой?
<ul class="nav-title">
<li class="brands">
<div class="menu-dropdown sb-2">
@foreach (var brand in Brands)
{
<div class="nav-column">
<h5>@brand.Header</h5>
<ul>
@foreach (var item in brand.Items)
{
<li>@item.Id</li>
}
</ul>
</div>
}
</div>
</li>
</ul>
@code {
private List<BrandModel> Brands { get; set; } = new List<BrandModel>();
private List<CategoryModel> Categories { get; set; } = new List<CategoryModel>();
private List<ColorModel> Colors { get; set; } = new List<ColorModel>();
protected override async Task OnInitializedAsync()
{
Brands = await HeaderNavComponentService.GetBrandAsync();
Categories = await HeaderNavComponentService.GetCategoryAsync();
Colors = await HeaderNavComponentService.GetColorAsync();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JS.InvokeVoidAsync("lazyLoadNav");
}
}
}
Обновление ответа @ enet:
render-mode = "Server" прекращает мигание и задержка остается.
Я действительно хочу загрузить данные настолько быстро, насколько это возможно. Скорость prerender - это именно то, что я хочу. В этот миг, он также имеет значение, полученное из службы. Мне просто не нравится та часть, которая исчезает и загружается обратно через некоторое время, когда ни одна строка кода не сообщает приложению о таком поведении.
При возникновении этой проблемы, я предполагаю, что любые динамические c компоненты будут иметь минимальное время простоя (2 секунды + время загрузки данных) из-за отсутствия данных.
Это действительно печально, UX, хотя приходится ждать некоторое время, чтобы иметь возможность просматривать список навигации. Кажется, мой план по использованию Blazor для нового проекта нарушен: (
Обновление ответа Хенка:
Действительно не имеет смысла для меня ставить StateHasChange () после каждого назначенная переменная могла бы помочь, но это помогло. Но все еще есть мерцание.
Затем я изменяю render-mode = "Server", и в результате ожидается поведение, которое больше не мерцает, данные быстро связываются с пользовательским интерфейсом.
Так что я думаю, что что бы вы ни делали, OnInitialize будет запускаться дважды, просто он не будет привязываться к пользовательскому интерфейсу на этапе предварительного рендеринга, если режим рендеринга установлен на сервере.