vuex单页面计数器

<div id="app">
    <p>{{count}}</p>
    <p>
        <button @click="addclick">+</button>
        <button @click="reduceclick">-</button>
    </p>
</div>
let store = new Vuex.Store({
    state:{
        count:0
    },
    mutations:{
        add:state => state.count++,
        reduce:state => state.count--
    },
    actions:{
//        add(){
//            store.commit('add')
//        },
//        reduce(){
//            store.commit('reduce')
//        }
        add(){
            return new Promise(resolve=>{
                setTimeout(function(){
                    store.commit('add');
                    resolve()
                },1000)
            })
        },
        reduce(){
            return new Promise(resolve=>{
                setTimeout(function(){
                    store.commit('reduce')
                },1000)
            })
        }
    }
})
let vm = new Vue({
    el:'#app',
    data:{},
    computed:{
        count(){
            return store.state.count
        }
    },
    methods:{
        addclick(){
            store.dispatch('add')
        },
        reduceclick(){
            store.dispatch('reduce')
        }
    }
})

 

posted @ 2019-09-29 15:17  石头记1  阅读(199)  评论(0编辑  收藏  举报