vue mapState,mapMutations,mapGetters
阿新 • • 發佈:2019-02-20
main.js
// The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import store from './store' import App from './vuex' import router from './router' import vuex from './vuex.vue' Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', store, router, render: xx=>xx(vuex) })
store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state={
count:44
}
const mutations={
add(state,n){
state.count+=n.b
},
plus(state){
state.count--
}
}
export default new Vuex.Store({
state,
mutations
})
vuex.vue
<template> <div id="app"> <h1>Hello Vuex</h1> <p>{{$store.state.count}} - {{count}}</p> <p> <button @click="add({b:10})">+</button> <button @click="plus">-</button> </p> </div> </template> <script> import {mapState,mapMutations} from 'vuex'; export default{ name:'App', computed:mapState({ count:state=>state.count //count:'count' }), methods:mapMutations([ 'add', 'plus' ]) } </script>
------------------------------------------------------------------------
mapGettersstore.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const state={ count:44 } const mutations={ add(state,n){ state.count+=n.b }, plus(state){ state.count-- } } const getters = { count:function(state){ return state.count+=100 } } export default new Vuex.Store({ state, mutations, getters })
vuex.vue
<template>
<div id="app">
<h1>Hello Vuex</h1>
<p>{{$store.state.count}} - {{count}}</p>
<p>
<button @click="add({b:10})">+</button>
<button @click="plus">-</button>
</p>
</div>
</template>
<script>
import {mapState,mapMutations,mapGetters} from 'vuex';
export default{
name:'App',
computed:({
...mapState([
"count",
]),
...mapGetters([
"count"
])
}),
methods:mapMutations([
'add',
'plus'
])
}
</script>