vuex
store 文件夹下的 index.js
1 import Vue from 'vue' 2 import Vuex from 'vuex' 3 4 Vue.use(Vuex); 5 6 // 创建实例 并导出 7 export default new Vuex.Store({ 8 state: { 9 count: 1 10 }, 11 getters: { // 监听 依赖的的值变化,会重新计算 类似vue的computed 12 getStateCount: function (state) { // 上面的state 13 return state.count + 1 14 } 15 }, 16 mutations: { // 修改count值 提交mutation来修改 +1 -1 17 add(state,n){ 18 state.count = state.count+n; 19 }, 20 reduction(state){ 21 state.count = state.count-1; 22 } 23 }, 24 actions: { // 注册actions 类似vue里的methods 在actions中提交mutation再去修改状态值 25 addFun(context,n) { 26 context.commit("add",n) 27 }, 28 reductionFun(context){ 29 context.commit("reduction") 30 } 31 }, 32 modules: {} // 多文件状态管理 33 })
HelloWorld.vue
<template>
<div class="hello">
<h1>{{ this.$store.state.count }}</h1>
<h1>{{ this.$store.getters.getStateCount }}</h1>
<p>count的值:{{this.$store.state.count}}</p>
<button @click="addFun">+</button>
<button @click="reductionFun">-</button>
<div style="border:1px solid pink; margin-top: 50px">{{count1}}</div>
</div>
</template>
<script>
// import {mapState, mapActions, mapGetters} from 'vuex'
import {mapState} from 'vuex'
export default {
name: 'HelloWorld',
props: {
msg: String
},
computed: {
...mapState({
count1: state => state.count
})
},
methods: {
// addFun() {
// this.$store.commit("add")
// },
// reductionFun(){
// this.$store.commit("reduction")
// }
addFun() {
this.$store.dispatch("addFun", 10);
},
reductionFun() {
this.$store.dispatch("reductionFun")
}
},
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
</style>
浙公网安备 33010602011771号