loading experience

ASP.NET Core

Blazor in .NET 10: stato persistente con [PersistentState]

Evitare il doppio caricamento dei dati tra prerendering e interattività, con un solo attributo.

Blazor in .NET 10: stato persistente con [PersistentState]

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".

Con [PersistentState] i dati caricati nel prerendering si riusano.
Con [PersistentState] i dati caricati nel prerendering si riusano.

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.

Lascia un commento