sey*_*yet 5 action store mutation vue.js vuex
我想通过操作将更改应用于 vuejs 应用程序中的变量。但我收到这个错误说[vuex] unknown local mutation type: updateValue, global type: app/updateValue
这是我的商店文件夹结构:
-store
-modules
-app
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
Run Code Online (Sandbox Code Playgroud)
这是我的./store/index.js文件:
-store
-modules
-app
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
-actions.js
-getters.js
-mutations.js
-state.js
-index.js
Run Code Online (Sandbox Code Playgroud)
这是我的./store/modules/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
Run Code Online (Sandbox Code Playgroud)
这是我的./store/modules/app/actions.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
Run Code Online (Sandbox Code Playgroud)
这是我的./store/modules/app/getters.js:
export const updateValue = ({commit}, payload) => {
commit('updateValue', payload)
}
Run Code Online (Sandbox Code Playgroud)
这是我的./store/modules/app/mutations.js:
export const value = state => {
return state.wruValue;
}
Run Code Online (Sandbox Code Playgroud)
这是我的./store/modules/app/state.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;
}
Run Code Online (Sandbox Code Playgroud)
最后这是我的 vue 组件:
<v-btn @click="updateValue(10)">
SHOW
</v-btn>
import { mapActions } from 'vuex';
...mapActions ('app',[
'updateValue'
]),
Run Code Online (Sandbox Code Playgroud)
因此,当我单击按钮时,我希望看到wruValue更改(我将值打印在其他地方以进行测试),但我收到了上面提到的错误。我的代码有什么问题?
commit('updateValue', payload, {root: true})
Run Code Online (Sandbox Code Playgroud)
但是我发现您对命名空间的使用很奇怪。对于我的项目,我不会将 getter、action 等文件分开,而是将任务、项目、公司等分开。但如果它适合你,那很好。好像不是这个问题。如果仍然出现错误,则可能需要将“updateValue”更改为“mutations/updateValue”或其他内容。
| 归档时间: |
|
| 查看次数: |
11287 次 |
| 最近记录: |