vuex使用方法

本实例主要讲vuex一种简单使用方法,也是官网推荐的方法执行流程,涉及技术点vue2+vuex+axios。html

vuex是vue应用的状态管理模式,说白了就是管理vue的一些状态信息,主要包括:vue

  1. state/mapStateios

  2. getters/mapGettersvuex

  3. mutationsjson

  4. actionsaxios

  5. 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状态,大概就是这么个流程!

相关文章
相关标签/搜索