这个帖子有更新,看第一个答案
所以,首先,我确实搜索了类似的问题(并找到了一些线程),但没有解决我的问题。我第一次尝试使用类星体框架,也许我在命名空间的某个地方迷路了。
所以,首先,一些信息:+我在使用 ESLint 编译时没有任何错误
+我在运行时的 javascript 控制台中没有任何错误
我的问题是:
+我的操作和突变确实在商店中保存了一些东西,但是不在应有的位置(请参阅帖子末尾的屏幕截图)
+我的 getter 似乎不起作用,并在 vue 开发工具中显示为“未定义”
我的商店是这样组织的:
+store [folder]
+ index.js
+ app-utils [folder]
--+ index.js
--+ getters.js
--+ actions.js
--+ mutations.js
--+ state.js
根 index.js 的代码:
import Vue from 'vue' import Vuex from 'vuex'
import appUtils from './app-utils'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
appUtils
}
})
export default store
然后,在 'app-utils' 文件夹中: index.js 的代码:
import state from './state'
import * as getters from './getters'
import * as mutations from './mutations'
import * as actions from './actions'
export default {
namespaced: true,
state,
getters,
mutations,
actions
}
state.js 的代码:
export default {
state: {
currentPageTitle: 'Hello'
}
}
getters.js 的代码:
export const getPageTitle = (state) => {
console.log('GET TITLE: ' + state.currentPageTitle)
return state.currentPageTitle
}
mutation.js 的代码:
export const setPageTitle = (state, newPageTitle) => {
console.log('MUTATION SET TITLE: ' + newPageTitle)
state.currentPageTitle = newPageTitle
}
export const deletePageTitle = (state) => {
console.log('MUTATION DELETE TITLE')
state.currentPageTitle = ''
}
actions.js 的代码:
export const setPageTitle = (context, newPageTitle) => {
console.log('ACTION SET TITLE: ' + newPageTitle)
context.commit('setPageTitle', newPageTitle)
}
export const deletePageTitle = (context) => {
console.log('ACTION DELETE TITLE')
context.commit('deletePageTitle')
}
我试图访问它的代码(int getPageTitle 计算字段):
<template>
<q-page>
<q-resize-observable @resize="onResize" /> TITLE : {{getPageTitle}}
<div class="row">
</div>
</q-page>
</template>
import { mapGetters, mapActions } from 'vuex'
export default {
data: () => ({
pageSize: {
height: 0,
width: 0
}
}),
mounted () {
this.setPageTitle('Template manager')
},
destroyed () {
this.deletePageTitle()
},
computed: {
...mapGetters('appUtils', [
'getPageTitle'
])
},
methods: {
...mapActions('appUtils', [
'setPageTitle',
'deletePageTitle'
]),
onResize (size) {
this.pageSize = size
}
}
}
</script>
<style>
</style>
最后,来自 vue 插件的截图,您可以看到在触发 mount() 钩子时已经设置了值,但不是处于“状态”,并且 getter 是未定义的。