Encontré una solución sobre cómo acceder a vue-router y otros servicios que solo funcionan dentro del componente vue. En la opción creada de App.vue, guardo el "esto" de la aplicación vue dentro del estado de vuex.
¿Es una buena manera o puede causar algunos problemas en el futuro?
en lugar de escribir:
this.$router.push('route-name')
de algún componente, es guardar this palabra clave en el estado como clave de context , por ejemplo, y ahora desde las Acciones, estoy usando el context en this lugar, así: state.context.router.push('route-name') y funciona..
mi pregunta es si es una buena solución o no.
Creo que no es una buena solución, si desea usar this , debe intentar con las acciones o obtener el valor devuelto, dentro de un archivo Vue en lugar de usarlo directamente en una acción.
doy un ejemplo y una explicacion
Ejemplo:
Adquiridor:
export function getRedirect(state){ return state.routerName }archivo vue:
<template> Page <button @onClick="redirect" > Redirect </button> </template> <script> import {mapGetters} from 'vuex' export default: { computed:{ ...mapGetters('VuexStoreName',['getRedirect']) }, methods:{ redirect(){ this.$router.push(this.getRedirect) } } } </script>Entonces, en lugar de usar la redirección dentro de un archivo JS, crear una acción y pasarla dentro del parámetro u obtenerla por estado, la usará correctamente en un archivo Vue.
El problema al configurar this en el estado es que cuando cambia, la instancia guardada no cambiará, y tendrá que actualizar cada vez y en todas partes. Y llamando a this dentro de un archivo Vue, siempre se actualizará