El manejo de datos en sesión o datos compartir trasversalmente dentro de una aplicación web es algo bastante común y necesario.
El local storage en los navegadores nos permite guardar datos que pueden ser utilizados en todo el contexto de nuestra página y actualizados según se requiera.
Blazor no tiene un soporte nativo para realizar esta actualización ya que Web assembly aún no cuenta con estas funciones. Sin embargo podemos solucionarlo de varias maneras.
- Utilizar interpolación con Javascript
Primero debemos crear una funciona para guardar y otra para obtener los datos del storage dentro de un archivo JS
window.setToStorage = function setToStorage(name, value) {localStorage.setItem(name, value);
} window.getToStorage = function getToStorage(name, value) {localStorage.getItem(name, value);
}
Luego utilizando IJSRuntime podemos hacer la llamada de esas funciones en código C#
return await JSRuntime.InvokeAsync("setToStorage", "sessionToke", token);
2. Utilizando la libreria Blazored LocalStorage
La librería más simple para el manejo de local storage disponible en este momento. Primero la instalamos como cualquier paquete nuget
dotnet add package Blazored.LocalStorage --version 3.0.0
Agregamos la configuración del servicio. Podemos especificar algunas propiedades configuración también.
public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add<App>("app"); builder.Services.AddBlazoredLocalStorage(config => config.JsonSerializerOptions.WriteIndented = true); await builder.Build().RunAsync(); }
luego entonces podemos inyectar la dependencia en el componente que lo necesitemos y utilizar los métodos para obtener y guardar datos en local storage
@inject Blazored.LocalStorage.ILocalStorageService localStorage @code { protected override async Task OnInitializedAsync() { await localStorage.SetItemAsync("name", "John Smith"); var name = await localStorage.GetItemAsync<string>("name"); } }
Reblogueó esto en El Brunoy comentado:
Local storage en Blazor y para mas información, el repaso que le dimos a Blazor como tecnología en el podcast
https://www.ivoox.com/ntn-62-especial-verano-sobre-webassembly-y-audios-mp3_rf_55831344_1.html