andreadottor / XE.Dottor.Demo.BlazorWebApp

Demo utilizzata per le sessioni su Blazor
8 stars 3 forks source link

Proprietà stateless #1

Closed heavymanto closed 3 years ago

heavymanto commented 3 years ago

ciao, ho ascoltato con molto interesse i tuoi video. Ad un certo punto asserisci che, per merito del architettura SPA, le pagine non vengono ricaricate e quindi le proprietà non perdono lo stato e il proprio valore. Purtroppo questo non mi torna. Nel progetto BlazorCounter, se aggiungi un nuovo compente e lo aggiungi alla pagina dei menu, al click sul counter esso si resetta. Il metodo OnInitialized viene chiamate ad ogni click su di esso e comunque la proprietà locale CounterValue = 0 C'è veramente una tecnica automatica (senza implementazione) per storicizzare le proprietà?

Grazie

andreadottor commented 3 years ago

Quello che intendo è che a differenza delle RazorPages o MVC, dove il click su un pulsante causa una richiesta in GET o POST, nel caso di una SPA, le variabili dei componenti mantengono i loro valori. L'evento OnInitialized viene richiamato solo quando entri in una pagina o il componente viene inizializzato la prima volta, e per tutto il suo ciclo di vita le proprietà e variabili mantengono i loro valori. Se clicchi sulla voce di menu, o esegui una navigazione, i componenti vengono reinizializzati...e lo stato in questo caso non viene mantenuto.

L'esempio è nella pagina del counter, dove il valore del counter ( proprietà "CounterValue" )viene mantenuto ogni volta che clicchi nel pulsante "Increment" o "Decrement". Per fare la stessa cosa con RazorPages o MVC dovresti appoggiarti ad un input (con type hidden) o ai cookie.

andreadottor commented 3 years ago

Nel caso ti servisse mantenere lo stato tra più pagine, nel progetto XE.Dottor.BlazorWebApp troverai la classe StateContainer che uso per salvare i Post ed evitare di richiederli alle API quando navigo dalla pagina di lista a quella di dettaglio. Essendo una SPA che gira tutta nel browser, ed iniettando quella classe come singleton, questa viene può essere condivisa tra tutti i componenti. Ovviamente non è uno State Manager reale, ma una bozza da cui poter partire.

heavymanto commented 3 years ago

Ti ringrazio tantissimo delle delucidazioni. C'è un blog italiano dove scrivere condividere tecniche in blazor? Ho visto https://blazordev.it/ ci sono ariticol interessanti ma non ha un blog di discussione. Io sono un vecchia scuola sono partito dall' ASP poi passato all ASPX che mi ha stregato, e con cui ho sviluppato progetti molto grandi. Sono rimasto deluse dall MVC e ancora di più da Angula, finalmente con Blazor mi è ritornata la voglia di scoprire approfondire tutti i segreti di questa tecnologia.

grazie ciao

[image: Mailtrack] https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5& Sender notified by Mailtrack https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5& 12/05/21, 15:17:38

Il giorno mer 12 mag 2021 alle ore 15:09 Andrea Dottor < @.***> ha scritto:

Nel caso ti servisse mantenere lo stato tra più pagine, nel progetto XE.Dottor.BlazorWebApp troverai la classe StateContainer che uso per salvare i Post ed evitare di richiederli alle API quando navigo dalla pagina di lista a quella di dettaglio. Essendo una SPA che gira tutta nel browser, ed iniettando quella classe come singleton, questa viene può essere condivisa tra tutti i componenti. Ovviamente non è uno State Manager reale, ma una bozza da cui poter partire.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/andreadottor/XE.Dottor.Demo.BlazorWebApp/issues/1#issuecomment-839759385, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRGQEJGLZ325Q3CRPEM3EDTNJ4ZZANCNFSM44YMDC2A .

andreadottor commented 3 years ago

La community https://blazordev.it/ ha anche un gruppo su linkedin e facebook dove potersi confrontare tranquillamente. In alternativa c'è il canale discord di Italian Coders (questo più generico, in quanto non di una specifica tecnologia)