vuex及其輔助函數簡單使用


1、新建store文件夾,內部新建index.js

文件內部內容如下:

寫法一

import Vuex from "vuex";
import Vue from "vue";
Vue.use(Vuex);

// 第一種寫法:
const state={
    count:0,
    num:100
}
const  getters={
    changeState(){
        return state.count/4
    }
}
const actions={
    acCountAdd({commit},val){
        commit('muCountAdd',val)
    },
    acCountMinus({commit},val){
        commit('muCountMinus',val)
    },
}
const mutations={
    muCountAdd(state,val){
        state.count+=val
    },
    muCountMinus(state,val){
        state.count-=val
    }
}

export default new Vuex.Store({
    state,
    getters,
    actions,
    mutations
})

寫法二:

export default new Vuex.Store({
    state:{
        count:0,
        num:100
    },
    getters:{
        changeState(state){
            return state.count/4
        }
    },
    actions:{
        acCountAdd({commit},val){
            commit('muCountAdd',val)
        },
        acCountMinus({commit},val){
            commit('muCountMinus',val)
        },
    },
    mutations:{
        muCountAdd(state,val){
            state.count+=val
        },
        muCountMinus(state,val){
            state.count-=val
        }
    },
})

截圖:

 

 2、不使用輔助函數時組件內基本用法----list.vue頁面

<template>
  <div>
    <h2>list</h2>
    <!-- 不使用輔助函數時,使用屬性的方式 -->
    <h3>vuex中的count:{{$store.state.count}}</h3>
    <h3>vuex中的count:{{$store.getters.changeState}}</h3>
    <button @click="btnClick">減少vuex的值</button>
  </div>
</template>

<script>
export default {
  name: "List",
  data() {
    return {
    };
  },
  computed:{
   
  },
  methods:{
    btnClick(){
      // 調用方法的方式
      this.$store.dispatch('acCountMinus',5)
    }
  }
};
</script>

截圖:

 

 3、使用輔助函數時組件內寫法----home.vue頁面

<template>
  <div>
    <h2>home</h2>
    <h3>vuex中的state的count:{{count}}</h3>
    <h3>vuex中的getters的changeState:{{changeState}}</h3>
    <!-- 使用action輔助函數后,可以直接調用acCountAdd方法 -->
    <button @click='acCountAdd(10)'>home改變vuex</button>
  </div>
</template>

<script>
import {mapState, mapMutations, mapActions, mapGetters} from "vuex"
export default {
  name: "Home",
  data() {
    return {
      
    };
  },
  created() {
    
  },
  computed:{
    // 使用state輔助函數,使用對象方式時,名稱可以不一致
    ...mapState({
      count:state=>state.count
    }),
    // 使用getters輔助函數,使用對象方式時,名稱可以不一致
    ...mapGetters({
      changeState:'changeState'
    })
  },
  methods: {
    // 使用mutations輔助函數,使用對象方式時,名稱可以不一致
    ...mapMutations({
      muCountAdd:'muCountAdd'
    }),
    // 使用actions輔助函數,使用對象方式時,名稱可以不一致
    ...mapActions({
      acCountAdd:'acCountAdd'
    })
  },
};
</script>

截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM