本实例主要讲vuex一种简单使用方法,也是官网推荐的方法执行流程,涉及技术点vue2+vuex+axios。html
vuex是vue应用的状态管理模式,说白了就是管理vue的一些状态信息,主要包括:vue
state/mapStateios
getters/mapGettersvuex
mutationsjson
actionsaxios
modulesthis
想要具体了解vuex请访问官网spa
上代码:prototype
store.jscode
export default { state: { messageList: [] //state初始化数据 }, getters: { messageList: state => state.messageList //获取messageList数据 }, mutations: { ['GET_MESSAGE_LIST'](state, res) { //改变state中的数据 state.messageList = res.data.messageList; //赋值方式 // state = { ...state, messageList: res.data.messageList }//这中方式能够改变state中的状态,可是getters数据不一样步,不知是ES6不支持仍是什么缘由?有了解的朋友帮忙解释下 不胜感激! } }, actions: { getMessageList({commit}) { Vue.prototype.$http.get('test/messageList.json') //这里是把axios写在原型上了,我是这么调用的,也有其余调用方式 .then(res => { commit('GET_MESSAGE_LIST', res) 执行mutations方法 }).catch(function (error) { console.log(error); }); } } }
messageList.vue组件
<script> import { mapGetters } from 'vuex' export default { data() { return {} }, computed: { ...mapGetters([ //把getters映射到组件内部数据便可使用 'messageList' ]) }, methods: { submitGetMessageList(){ this.$store.dispatch('getMessageList');//$dispatch在vue2中已废除,此处用的是elementUI中的方法,触发actions } } } </script>
vuex mutations是惟一改变state的值,Action 提交的是 mutation,不是直接更改state状态,大概就是这么个流程!