¿Hay alguna forma de distribuir acciones entre dos módulos vuex con espacios de nombres?

Resuelto Chris Schmitz asked hace 7 años • 2 respuestas

¿Es posible enviar una acción entre módulos con espacios de nombres?

Por ejemplo, tengo los módulos "tablero" y "notificación" de Vuex. Cada uno tiene un espacio de nombres. Me gustaría enviar una acción desde el módulo del tablero de juego en el módulo de notificación.

Pensé que podría usar el nombre del módulo en el nombre de la acción de envío de esta manera:

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

Pero cuando intento hacer esto, aparecen errores que me hacen pensar que Vuex está intentando enviar una acción dentro de mi módulo de tablero de juego:

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

¿Existe alguna forma de enviar acciones de un módulo Vuex determinado a otro, o necesito crear algún tipo de puente en la instancia raíz de Vuex?

Chris Schmitz avatar Mar 24 '17 01:03 Chris Schmitz
Aceptado

Sólo necesitas especificar que estás enviando desde el contexto raíz:

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

Ahora, cuando el envío llegue a la raíz, tendrá la ruta del espacio de nombres correcta al módulo de notificaciones (en relación con la instancia raíz).

Esto supone que está configurando namespaced: trueel módulo de su tienda Vuex.

Jake avatar Mar 23 '2017 18:03 Jake

despacho('mobuleB/actionB', nulo, { raíz: verdadero })

Kaddu Livingstone avatar Oct 15 '2021 13:10 Kaddu Livingstone