🎉 ¡Aprovecha el último descuento del año: 60% OFF en 2 planes!

10d - 15h - 39m - 11s'
Ricardo
Ricardo
Laravel
Comparte:

History back

Tengo un proyecto con Inertia, realmente me pasó ya lo mismo con Laravel+VueRouter con la opción de volver a una url anterior con el botón del navegador, de esta forma no refresca la página, el problema es este:
Tenemos una lista de usuarios, user.index
Accedemos al usuario para editar: user.edit{1}
Modificamos el registro: user.update
volvemos con back del navegador, history.back(), con cualquiera de estas opciones no refresca la lista de user.index y no vemos lo cambios.
Solución, creo un sistema con VUEX para volver a la última visita y así si refresca:
const store = createStore({
    state() {
        return {
            history: ["/"],
        };
    },
    getters: {
        getHistory(state) {
            return state.history.length == 1
                ? state.history[0]
                : state.history[state.history.length - 1];
        },
    },
    mutations: {
        reset(state) {
            state.history = ["/"];
        },
        increment(state, url) {
            state.history.push(url);
        },
        decrease(state) {
            if (state.history.length > 1) state.history.pop();
        },
    },
    actions: {
        historyReset(context) {
            context.commit("reset");
        },
        historyIncrement(context, url) {
            context.commit("increment", url);
        },
        historyBack(context) {
            context.commit("decrease");
        },
    },
}); 
ahora en los componentes basta con registrar la ruta, yo lo hago en el mounted() del componente: 
this.historyIncrement(window.location.pathname); 

y crear el método back de esta manera:
 
back() {
  this.historyBack();
  this.$inertia.get(this.getHistory);
}, 

Funcionar, funciona... la cuestión es, ¿a alguien se le ocurre algo mejor?
Jorge García
Jorge García (2908 xp)
Hola Ricardo, dónde almacenas el listado de usuario? si pudieras proveer algún repositorio para reproducirlo sería muy útil.
Ricardo
Ricardo (162 xp)
No lo almaceno, es la respuesta de un paginate(). Dejo el repositorio de cómo funciona: https://github.com/AdminSari71/historyback.git, lo he ceñido exclusivamente al problema planteado, creo que así se entenderá mejor
Jorge García
Jorge García (2908 xp)
Ricardo
Ricardo (162 xp)
He respondido en los comentarios del video de 9 de enero y he borrado un post anterior que no quería borrar... no sé si se puede recuperar. Saludos