state:用于存储数据,准确的来说是存储状态,在组建中使用的方法为:
this.$store.state.paper
mutations:用来写同步的方法,修改状态,在组件中使用方法为:this.$store.commit(‘方法名’,参数)
actions:用来提交mutation,相当于mutation中的方法包装了一层,可以是异步的。提交mutation,再通过mutation同步修改数据,在组件中使用方法为:this.$store.dispath(‘方法名’,参数)
getters:相当于state的计算属性,在组件中使用方法为:this.$sotre.getters.fun()
modules:当管理的状态很多的时候,需要将vuex的store对象分割成模块进行管理,如下:
import dicts from "@/store/modules/dicts.js";
import paper from "./modules/paper";
Vue.use(Vuex);
const store = new Vuex.Store({
modules: {
dicts,
paper,
},
getters,
});
export default store;
如下:包含state、mutations、action三部分
const state = {
paper: {},
};
const mutations = {
SET_PAPER(state, data) {
state.paper = data
},
};
const actions = {
setPaper({commit}, data) {
commit('SET_PAPER', data);
},
};
export default {
namespace: true,
state,
mutations,
actions,
};
在组件中使用如下:
getDetail() {
previewPaper(this.$route.query.paperId).then(res=>{
if (res.code == 200){
//把数据存在vuex中
this.$store.dispatch('setPaper',res.data);
}
})
},