1. 程式人生 > 其它 >Vue--vuex:元件的取值,值的操作

Vue--vuex:元件的取值,值的操作

這裡的取值方式只針對對 vuex 裡面資料的拿取,不關注在vuex裡面進行了什麼操作;同理,操作值是字面上對 vuex 資料邏輯的簡單處理;主要是在元件中如何去使用 vuex 的幾個核心;

例項化 vuex

import Vue from 'vue';
import Vuex from 'vuex';

//註冊vuex
Vue.use(Vuex);

//例項化vuex
export default new Vuex.Store({
  state: {
    num: 1,
  },
  getters: {
    outdata(state) {
      return state.num + '加了getters';
    }
  },
  mutations: {
  // 接受兩個引數,state:上邊的資料,payload:資料載荷,需要傳入的資料 one(state,payload) { state.num
+=payload } }, actions: { two({ commit }) { commit('one'); } }, });

取值方式

----State----

插值表示式獲取:{{ $store.state.資料名 }}

  <div class="comp-test">
    <p>{{ $store.state.num }}</p>
    <p>{{ $store.state.模組後的路徑名.num }}</p>
  </div>

使用 computed 屬性計算:返回 this.$store.state.資料名

export default {
  data() {
    return {};
  },
  computed: {
    number() {
      return this.$store.state.num;
      return this.$store.state.模組後的路徑名.num;
    },
  },
};
</script>    

輔助函式---mapState,使用 computed 屬性計算

陣列寫法:...mapState([ ‘資料名1’ ,‘資料名2’]);

export default {
  data() {
    return
{}; }, computed: { ...mapState(['num']), ...mapState([‘模組化後的路徑名’,'num']), }, };

物件寫法:...mapState({  自定義的資料名:(state)=>(state.vuex中的資料名)  });

export default {
  data() {
    return {};
  },
  computed: {
    ...mapState({
          newNum: (state) => state.num,       
    }),
    ...mapState({
          newNum: (state) => state.模組後的路徑名.num,       
    }),
  },
};

----Getters----

插值表示式獲取:{{ $store.geeters.fnname }}  // fname 是指 vuex例項中 Getters 中的函式名

  <div class="comp-test">
    <p>{{ $store.getters.outdata }}</p>
    <p>{{ $store.getters.模組後的路徑名.outdata }}</p>
  </div>

使用 computed 屬性計算:返回 this.$store.geeters.fnname  // fname 是指 vuex例項中 Getters 中的函式名

export default {
  data() {
    return {};
  },
  computed: {
    number() {
      return this.$store.getters.outdata;
      return this.$store.getters.模組後的路徑名.outdata;
    },
  },
};
</script>   

輔助函式---mapGetters,使用 computed 屬性計算

陣列寫法:...mapGetters([ ‘資料名1’ ,‘資料名2’]);

export default {
  data() {
    return {};
  },
  computed: {
    ...mapGetters(['outdata']),
    ...mapGetters([‘模組化後的路徑名’,'outdata']),
  },
};

物件寫法:...mapGetters({  自定義的資料名:{  type:資料名,payload:載荷引數 }  });

export default {
  data() {
    return {};
  },
  computed: {
    ...mapGetters({
         newName: 'outdata'      
    })
  },
};    

操作值的方式

----Mutations----

直接在元件中操作(不建議使用):this.$store.state.資料名  // 直接操作資料,未通過 Mutation

export default {
  data() {
    return {};
  },
  methods: {
     add(){
          this.$store.state.num++     
    })
  },
}; 

寫在 methods 操作:this.$store.commit(fnname)  // fnname 是指在 vuex例項中 Mutations 中的函式名

export default {
  data() {
    return {};
  },
  methods: {
     add(){
          this.$store.commit('one')
    })
  },
}; 

輔助函式---mapMuation,都作為方法使用;

陣列寫法:  ...mapMuations([  fnname ]);  // fnname 是指在 vuex例項中 Mutations 中的函式名

export default {
  data() {
    return {};
  },
  methods: {
     add(){
            ...mapMutations(['one']),
    })
  },
}; 

物件寫法:物件寫法:   ...mapMuations({  自定義方法名 {  type:vuex中方法名,payload:params  }  });

export default {
  data() {
    return {};
  },
  methods: {
     add(){
          ...mapMutations({
               newName: {
                   type: 'one',
                   payload: 1,
               },
          }),
    })
  },
}; 

----Actions----

在元件中作為方法操作:this.$store.dispatch(fnname)  // fnname 是指在 vuex例項中 Actions 中的函式名

export default {
  data() {
    return {};
  },
  methods: {
     add(){
         this.$store.dispatch('two');
    })
  },
}; 

輔助函式---mapActions ,都作為方法使用;

陣列寫法:  ...mapActions ([  fnname ]);  // fnname 是指在 vuex例項中 Actions 中的函式名

export default {
  data() {
    return {};
  },
  methods: {
     add(){
            ...mapActions(['two']),
    })
  },
}; 

物件寫法:物件寫法:   ...mapActions ({  自定義方法名 {  type:vuex中方法名,payload:params  }  });

export default {
  data() {
    return {};
  },
  methods: {
     add(){
          ...mapActions({
               newName: {
                   type: 'two',
               },
          }),
    })
  },
};