store文件如下 1.modules下文件是模塊化的劃分,裡面的js有state,action,mutations.然後通過 export default { namespaced: true, state, mutations, actions} 方式導出。 2.index.js中導出的格式如下 ...
store文件如下
1.modules下文件是模塊化的劃分,裡面的js有state,action,mutations.然後通過
export default {
namespaced: true,
state,
mutations,
actions
}
方式導出。
2.index.js中導出的格式如下
new Vuex.Store({ modules:{ app:{ namespaced:true, state:{}, mutations:{}, actions:{} }, ... }, getters:{ sidebar: state => state.app.sidebar, size: state => state.app.size, device: state => state.app.device, sjhnum: state => state.shangjinhui.num, ... } })
所以index.js中需要先對modules進行處理,通過require.context獲取modules下所有js文件,如下
const modulesFiles = require.context('./modules', true, /\.js$/) const modules = modulesFiles.keys().reduce((modules, modulePath) => { const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1') const value = modulesFiles(modulePath) modules[moduleName] = value.default return modules }, {})
然後對getters的處理可以摘出來放到單獨js里。
因為modules的處理,下麵相對於普通的使用方式多了個命名空間
3.獲取store里的數據
1 this.$store.state.命名空間.
2 import { mapState } from 'vuex';
computed:{
...mapGetters({
'getters里定義的key(其實對應的state值)'
})
}
4修改store值
this.$store.dispatch('命名空間/actions里的函數名',參數數據),
this.$store.commit('命名空間/mutations里的函數名',參數數據)