Con il prerendering, un componente Blazor viene eseguito prima sul server per produrre l'HTML iniziale, poi di nuovo quando diventa interattivo. Senza accorgimenti, i dati vengono caricati due volte e la pagina "lampeggia".
La soluzione in .NET 10
L'attributo [PersistentState] salva il valore di una proprietà durante il prerendering e lo ripristina quando il componente diventa interattivo.
@page "/prodotti"
@inject ICatalogo Catalogo
@if (Prodotti is null)
{
<p>Caricamento...</p>
}
else
{
<ul>
@foreach (var p in Prodotti)
{
<li>@p.Nome - @p.Prezzo.ToString("C")</li>
}
</ul>
}
@code {
[PersistentState]
public List<Prodotto>? Prodotti { get; set; }
protected override async Task OnInitializedAsync()
{
// durante la fase interattiva il valore è già stato ripristinato
Prodotti ??= await Catalogo.ElencoAsync();
}
}
In versioni precedenti serviva usare a mano PersistentComponentState, registrando callback e chiavi: ora basta l'attributo.
Altri miglioramenti di Blazor
- Gestione più robusta della riconnessione nei circuiti Blazor Server.
- Script del framework distribuiti come risorse statiche con impronta, quindi memorizzabili a lungo nella cache del browser.
- Gestione delle pagine non trovate più integrata con il routing.
Quando scegliere Blazor
Blazor è ideale per applicazioni gestionali e interfacce ricche scritte interamente in C#, condividendo modelli e logica tra server e client. Per siti pubblici con molto contenuto e poca interattività, Razor Pages o il rendering statico restano più leggeri.
Commenti (0)
Nessun commento ancora.