Почти во всех руководствах, руководствах, публикациях и т. Д., Которые я видел при регистрации модуля vuex, если модуль зарегистрирован компонентом, createNamespacedHelpers
импортируется и определяется до оператора export default
, например:
import {createNamespacedHelpers} from 'vuex'
const {mapState} = createNamespacedHelpers('mymod')
import module from '@/store/modules/mymod'
export default {
beforeCreated() {
this.$store.registerModule('mymod', module)
}
}
это работает, как и ожидалось, но что, если мы хотим, чтобы модуль имел уникальное или определяемое пользователем пространство имен?
import {createNamespacedHelpers} from 'vuex'
import module from '@/store/modules/mymod'
export default {
props: { namespace: 'mymod' },
beforeCreated() {
const ns = this.$options.propData.namespace
this.$store.registerModule(ns, module)
const {mapState} = createNamespacedHelpers(ns)
this.$options.computed = {
...mapState(['testVar'])
}
}
}
Я думал, что это будет работать, но это не так.
Зачем нужно что-то подобное?потому что
export default {
...
computed: {
...mapState(this.namespace, ['testVar']),
...
},
...
}
не работает