¿Hay alguna forma de enviar acciones entre dos módulos vuex con espacio de nombres?


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

Por ejemplo, tengo módulos vuex "gameboard" y "notification". Cada uno tiene espacio de nombres. Me gustaría enviar una acción desde el tablero al módulo de notificación.

Pensé que podría usar el nombre del módulo en el nombre de la acción de despacho 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 trato de hacer esto recibo errores que me hacen cosa vuex está tratando de enviar una acción dentro de mi módulo de gameboard:

[vuex] unknown local action type: notification/triggerSelfDismissingNotification, global type: gameboard/notification/triggerSelfDismissingNotification

¿Hay una forma de enviar de módulo vuex a módulo o necesito crear algún tipo de puente en la instancia raíz de vuex?

Author: Chris Schmitz, 2017-03-23

1 answers

Solo necesita especificar que está enviando desde el contexto raíz:

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

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

Esto es asumiendo que estás configurando namespaced: true en tu módulo vuex store.

 115
Author: Jake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 18:44:44