Es posible el envío de una acción entre nombres de espacios de módulos?

E. g. He vuex módulos de «tablero de juego» y «notificación». Cada uno de ellos son nombres de espacios. Me gustaría enviar una acción desde el tablero de juego para el módulo de la notificación.

Pensé que podría utilizar el nombre del módulo en el despacho de la acción nombre como este:

//store/modules/gameboard.js
const actions = {
    myaction ({dispatch}) {
        ...
        dispatch('notification/triggerSelfDismissingNotifcation', {...})
    }
}

//store/modules/notification.js
const actions = {
    triggerSelfDismissingNotification (context, payload) {
        ...
    }
}

Pero cuando trato de hacer esto obtengo errores que me hacen cosa vuex está tratando de enviar una acción dentro de mi tablero del módulo:

[vuex] desconocido de acción local tipo: notificación/triggerSelfDismissingNotification, tipo global: tablero de juego/notificación/triggerSelfDismissingNotification

Hay una manera de despacho de vuex módulo a módulo o tengo que crear algún tipo de un puente en la raíz vuex instancia?

1 Comentario

  1. 227

    Sólo necesitas especificar que eres el despacho de la raíz de contexto:

    //from the gameboard.js vuex module
    dispatch('notification/triggerSelfDismissingNotifcation', {...}, {root:true})
    

    Ahora, cuando la expedición llega a la raíz de lo que se tendrá la correcta espacio de nombres de ruta de acceso del módulo de notificaciones (en relación a la raíz de la instancia).

    Esto es suponiendo que usted está configurando namespaced: true en su vuex de almacén módulo.

    • Ruido 🙂 gracias por la ayuda!
    • Este es el único hit en internet para la búsqueda de una solución. Gracias por responder.
    • Lo mismo por mí. Yo’just tener una visión oficial de google docs y esta opción no está documentado.
    • Para ser justos, se documenta aquí vuex.vuejs.org/en/modules.html en «Acceso a los Activos Globales en los nombres de espacios de Módulos». Aunque es un poco difícil de tomar.
    • Me encanta vue, pero a mí me parece que vuex añade más capas de dificultad, en lugar de hacerlo más sencillo. Ahora sé que este no es el propósito de vuex pero aún así, no es molesto que siempre tengo que ser conscientes de algunos de los convenios, como en este ejemplo notification/trigger, entonces, si yo quiero ser un poco más genérico hago ${NOTIF_TYPE_NAME}/${NOTIF_TRIGGER_ACTION}, todavía necesita de la barra, o incluso crear una función de ayuda para esto, siento que cuando quiero que mi Aplicación sea más modular puedo pagar mucho más de lo que puedo conseguir. Esta es mi opinión
    • Usted puede utilizar this.dispatch. No necesita {root: true}. Este es global.
    • No tienes que usar {root: true}. En el caso de que usted quiere decir es, probablemente, el envío a un niño módulo, que de hecho (y obviamente) no necesita de este indicador.

Dejar respuesta

Please enter your comment!
Please enter your name here