所以我正在尝试用vue cli创建一个新项目,在这里我使用路由器和VueX
因此,在我的HelloWorld.vue文件中,脚本部分中包含以下代码:
import { mapState } from 'vuex'
export default {
name: 'hello',
computed: mapState({
msg: 'nombre'
}),
在状态中是否有更直接的方法来调用值?例如,我想这样做
msg: store.nombre
我的vuex存储库在根main.js中定义如下:
//vuex
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
nombre: "POS vuex"
}
});
new Vue({
el: '#app',
router,
store,
template: '<App/>',
components: { App }
})
答案 0 :(得分:1)
以计算方式使用mapState
时,您实际上可以使用该组件中的this
来调用这些状态-在模板或脚本部分:
在...
上使用mapState
运算符,您就可以完成:
示例:
您的商店:
const store = new Vuex.Store({
state: {
nombre: "POS vuex",
otherState: "abc",
anotherState: "efg"
}
});
您的组件:
<template>
<div id="test">
{{ nombre }}
{{ otherState }}
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
name: 'hello',
methods: {
logState() {
console.log(this.anotherState);
}
},
computed: {
...mapState(["nombre", "otherState", "anotherState"]),
}
}
</script>
答案 1 :(得分:1)
实际上我正在寻找这种方式:
msg: this.$store.state.nombre
(我缺少“ .state”部分)
答案 2 :(得分:0)
computed: {
...mapState('moduleOne', ['keyOne', 'keyTwo'])
}
它使您可以通过组件内部的this.keyOne
和this.keyTwo
访问值。
您还可以将商店添加到root vue instance,并通过全局this.$store
指令访问组件内部的状态。
this.$store.module.keyOne
this.$store.module.keyTwo
另外,如果您需要从组件外部访问商店,则还可以导出商店并直接从非组件代码导入。
如果您导出商店,则
import Vue from 'vue'
import Vuex from 'vuex'
import moduleTwo from './modules/moduleOne'
import moduleOne from './modules/moduleTwo'
Vue.use(Vuex)
const store = new Vuex.Store({
strict: true,
modules: {
moduleOne,
moduleTwo
}
})
export default store
您可以将其导入需要访问状态,获取器,操作和突变的任何位置。
import store from '@/store'
console.log(store.state.moduleOne.keyone)
store.dispatch('moduleOne/actionOne', { keyOne: valOne })
store.getters['moduleOne/getterOne']
store.commit('moduleOne/mutationOne', data)
答案 3 :(得分:-2)
使用 vuex创建的方法呼叫您所在的州。
谢谢