Tengo un formulario de 3 pasos, ahora estoy usando 3 páginas diferentes para cada paso. cada paso requiere un envío al backend para realizar algunas validaciones y cálculos que luego se envían al siguiente paso.
El problema es, digamos que un usuario llenó el primer paso y va al segundo paso, si vuelve a cargar la página en el segundo paso, los datos del primer paso se eliminarán de la tienda Vuex, y en el último paso cuando él envíe el formulario, obtendrá un error porque los datos del primer paso ya no están disponibles en la tienda Vuex. Además, si presiona el botón Atrás en cualquier paso, el formulario del paso anterior se borrará y los datos no estarán allí.
Puedo usar localStorage y guardar los datos para cada paso, pero el problema con este enfoque es que algunos datos son confidenciales y no quiero almacenar datos confidenciales en localStorage. El segundo problema con este enfoque es que los datos siempre estarán en el formulario y no se borrarán si el usuario cierra el navegador o algo por el estilo.
¿Cuál es una buena manera de solucionar estos problemas?
Como alternativa a localStorage, se puede usar el almacenamiento de sesiones.
Cada vez que se carga un documento en una pestaña en particular en el navegador, se crea una sesión de página única y se asigna a esa pestaña en particular. Esa sesión de página es válida solo para esa pestaña en particular.
Una sesión de página dura mientras la pestaña o el navegador estén abiertos, y sobrevive a las recargas y restauraciones de la página.
Al abrir una página en una nueva pestaña o ventana, se crea una nueva sesión con el valor del contexto de navegación de nivel superior, que difiere de cómo funcionan las cookies de sesión.
Abrir varias pestañas/ventanas con la misma URL crea sessionStorage para cada pestaña/ventana.
Duplicar una pestaña copia el almacenamiento de sesión de la pestaña en la nueva pestaña. Al cerrar una pestaña/ventana finaliza la sesión y borra los objetos en
sesiónAlmacenamiento.
Tomado de https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage