【发布时间】:2019-12-08 08:34:15
【问题描述】:
我想通过操作将突变应用到我的 vuejs 应用程序中的变量。但是我收到这个错误说[vuex] unknown local mutation type: updateValue, global type: app/updateValue
这是我的 store 文件夹结构:
-store
-modules
-app
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
这是我的 ./store/index.js 文件:
import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'
import getters from './getters'
import modules from './modules'
import mutations from './mutations'
import state from './state'
Vue.use(Vuex)
const store = new Vuex.Store({
namespaced: true,
actions,
getters,
modules,
mutations,
state
})
export default store
这是我的./store/modules/index.js:
const requireModule = require.context('.', true, /\.js$/)
const modules = {}
requireModule.keys().forEach(fileName => {
if (fileName === './index.js') return
// Replace ./ and .js
const path = fileName.replace(/(\.\/|\.js)/g, '')
const [moduleName, imported] = path.split('/')
if (!modules[moduleName]) {
modules[moduleName] = {
namespaced: true
}
}
modules[moduleName][imported] = requireModule(fileName).default
})
export default modules
这是我的./store/modules/app/actions.js:
export const updateValue = ({commit}, payload) => {
commit('updateValue', payload)
}
这是我的./store/modules/app/getters.js:
export const value = state => {
return state.wruValue;
}
这是我的./store/modules/app/mutations.js:
import { set, toggle } from '@/utils/vuex'
export default {
setDrawer: set('drawer'),
setImage: set('image'),
setColor: set('color'),
toggleDrawer: toggle('drawer')
}
export const updateValue = (state, payload) => {
state.wruValue = payload * 12;
}
这是我的./store/modules/app/state.js:
export default {
drawer: null,
color: 'green',
wruValues:1,
wruValue: 1,
}
最后这是我的 vue 组件:
<v-btn @click="updateValue(10)">
SHOW
</v-btn>
import { mapActions } from 'vuex';
...mapActions ('app',[
'updateValue'
]),
因此,当我单击按钮时,我希望看到 wruValue 发生更改(出于测试目的,我将值打印在其他地方),但我得到了上面提到的错误。我的代码有什么问题?
【问题讨论】:
-
我不相信您可以命名最顶层的商店:
const store = new Vuex.Store({ namespaced: true, //... etc(在您的 ./store/index.js 文件中)。namespace属性仅供模块使用。
标签: vue.js action vuex store mutation