Back

vuejs - 为vuex 实现带参数的 getter , 和 state.commit

发布时间: 2019-01-03 06:34:00

getter 带参数

参考:https://vuex.vuejs.org/guide/getters.html#method-style-access

或者:https://stackoverflow.com/questions/37763828/javascript-es6-double-arrow-functions

官方例子:

getters: {
  // ...
  getTodoById: (state) => (id) => {
    return state.todos.find(todo => todo.id === id)
  }
}使用:
store.getters.getTodoById(2) // -> { id: 2, text: '...', done: false }

stackoverflow 例子:

new Vuex.Store({
  getters: {
    someMethod(state){
      var self = this;
       return function (args) {
          // return data from store with query on args and self as this
       };       
    }
  }
})

commit 带参数

参考;https://stackoverflow.com/questions/46097687/vuex-passing-multiple-parameters-to-actionhttps://stackoverflow.com/questions/40522634/can-i-pass-parameters-in-computed-properties-in-vue-js

就是把第二个参数,以hash的形式传过来。 

// vue页面调用:
      store.commit(INCREASE, {
        vid: vid   // 这里可以容纳更多参数
      })

// store.js 
const mutations = {
  [INCREASE](state, data){
    pair = state.pairs.find( (pair) => {
      return pair.vid == data.vid   // 注意这里的 data.vid 就是了。
    })
  }
}

Back