vuex中的mapState, mapActions, mapMutations用法簡介


vuex中的mapState, mapActions, mapMutations用法簡介

對於vuex狀態管理,這里說下個人見解,vuex大概就是根據需求定義一些全局變量,但是我們必須通過store去訪問和修改它。

我們可以把vuex分為state,getter,mutation,action四個模塊,通俗的講一下四個模塊的作用:

state:定義變量;

getters:獲取變量;

mutations:同步執行對變量進行的操作;

actions:異步執行對變量進行的操作;

下面定義了一個store模塊log.js:

const state = {
  logs: []
}

const getters = {
 logsGetter: (state) => {
  return state.logs
 }
} const mutations
= { ADD_ERROR_LOG: (state, log) => { state.logs.push(log) } } const actions = { addErrorLog({ commit }, log) { commit('ADD_ERROR_LOG', log) } } export default { namespaced: true, state,
getters, mutations, actions }

那么我們怎么去用它們呢?首先我們來看代碼:

<script>
import { mapstate, mapActions, mapMutations } from 'vuex'
export default {
  computed: {
    // 對象形式
    // ...mapstate({
    //   logs: state => state.logs
    // })
    //數組形式
    ...mapstate([
      // 需要和state中定義的變量相同
      'logs'
    ])
  },
  methods: {
    // 對象形式
    // ...mapActions({
    //   'addErrorLog': 'addErrorLog'
    // })
    // 數組形式
    ...mapActions([
      'addErrorLog'
    ]),
    // 對象形式
    // ...mapMutations({
    //   'ADD_ERROR_LOG': 'ADD_ERROR_LOG'
    // })
    // 數組形式
    ...mapMutations([
      'ADD_ERROR_LOG'
    ])
  }
}
</script>

我們分別獲取到了logs,addErrorLog,ADD_ERROR_LOG,只需要通過如this.logs這樣的形式去調用即可。


免責聲明!

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



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