index.js
store文件下的基本文件
import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as getters from './getters'
import state from './state'
import mutations from './mutations'
// 每次mutation 打印日志
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex)
// 开启调试
const debug = process.env.NODE_ENV !== 'production'
export default new Vuex.Store({
actions,
getters,
state,
mutations,
strict: debug,
plugins: debug ? [createLogger()] : []
})
state.js
管理状态
const state = {
singer: {}
}
export default state
mutations.js
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)
import * as types from './mutation-type'
const mutations = {
[types.SET_SINGER](state, singer) {
state.singer = singer
}
}
export default mutations
mutation-type.js
管理mutations的名字
// 定义一些常量
export const SET_SINGER = 'SET_SINGER'
action.js
异步操作或对mutation进行封装会在此书写
getters.js
对state进行映射,即为store的计算属性
/* 将数据提交到组件 */
export const singer = state => state.singer
在组件中提交 Mutation修改数据
使用 mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用
import { mapMutations } from 'vuex'

在组件中取数据
<script type="text/ecmascript-6">
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters(['fullScreen', 'playList'])
}
}
</script>