vuex方法封装调用
vuex
https://vuex.vuejs.org/zh/guide/mutations.html
index.js
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' // 插件,mutations修改state时会记录并显示修改日志 import createLogger from 'vuex/dist/logger' Vue.use(Vuex) // vuex中的调试工具,比较费性能,只在开发中使用 const debug = process.env.NODE_ENV !== 'production' export default new Vuex.Store({ actions, getters, state, mutations, strict: debug, plugins: debug ? [createLogger()] : [] })
state.js 定义vuex中状态变量
const state = { singer: {}, } export default state
getters.js 过滤包装state变量
// 过滤并计算属性 export const singer = state => state.singer
actions.js 异步调用修改mutations中的方法
export const setSinger = function ({commit}, {list}) { commit(types.SET_SINGER, true) }
mutations-type.js 封装mutations中的方法常量
// mutation 里用到的方法常量值 export const SET_SINGER = 'SET_SINGER'
mutations.js同步修改state中的变量
// 同步方法,修改state的值 import * as types from './mutation-types' const mutations = { [types.SET_SINGER](state, singer) { state.singer = singer } } export default mutations
调用vuex中的方法
//示例:调用 actions中的方法并传值
import {mapActions} from 'vuex' ...mapActions([ 'setSinger', 'setRan' ])
selectItem(item, index) {
//向vuex的actions中的方法传值
this.setSinger({
list: this.testList,
index
})
},
调用vuex修改state中的变量
//示例:通过mutations修改state中的变量 import {mapMutations,} from 'vuex' ...mapMutations({ updateSinger: 'SET_FULL_SCREEN' }), open() { //调用vuex的mutations中的方法修改state中的值 this.updateSinger(true) },