WhyNotTryCalmer
WhyNotTryCalmer

Reputation: 496

How to pass multiple parameters to vuex getters?

In a vue.js component (using vuex), I have:

computed: {...
    filtered () {
      return this.withFilters(obj1, obj2) 

with withFilters a getter to define in the store. But how in the store can I get the arguments passed to withFilters and define this getter accordingly? For a 1-argument function I would have simply done something like

withFilter: state => obj1 => { ...

For example:

withFilter: state => obj1 => {
 for (var k in obj1) {
  obj1[k] !== null ? console.log('Not null!') : console.log('Null!')
 }
}

Not sure how to do it with a 2-argument function.

Upvotes: 8

Views: 6794

Answers (1)

Phil
Phil

Reputation: 164766

You just need to define the function returned by your getter with multiple arguments. For example

getters: {
  withFilter (state) {
    return (obj1, obj2) => {
      // your code here
    }
  }
}

You could write this entirely with arrow functions but I think it looks messy (personal opinion)

withFilter: (state) => (obj1, obj2) => {
  // your code here
}

See the documentation on ES6 arrow functions and argument parentheses here...

// Parentheses are optional when there's only one parameter name:
(singleParam) => { statements }
singleParam => { statements }

Upvotes: 16

Related Questions