Péah
Péah

Reputation: 131

How call action in action VueX

I try to call an action in action in Vue.js I spare you the logic, which is to manage the number of days in a month and leap years

    actions : {
       incrementDay : ({dispatch},context) => {
           if(context.state.month === 1){
             if (context.state.day < 31) {
                context.commit("INCREMENT_DAY")
             } else {
                context.commit("RESTORE_DAY")
                context.dispatch(incrementMonth) // 2nd action i try to call
               }
           }
       },
       incrementMonth: (context) =>{
         // here my logic
       },
    }

Thanks for your help !

Upvotes: 0

Views: 431

Answers (1)

Orbis
Orbis

Reputation: 475

Just pass the action as string. Docs

actions : {
   incrementDay : ({dispatch},context) => {
       if(context.state.month === 1){
         if (context.state.day < 31) {
            context.commit("INCREMENT_DAY")
         } else {
            context.commit("RESTORE_DAY")
            context.dispatch("incrementMonth")
           }
       }
   },
   incrementMonth: (context) =>{
     // here my logic
   },
}

I dont know why u pass the context as argument to increment day. U can access the state in the first argument. Like:

actions : {
   incrementDay : ({dispatch, commit, state}) => {
       if(state.month === 1){
         if (state.day < 31) {
            commit("INCREMENT_DAY")
         } else {
            commit("RESTORE_DAY")
            dispatch("incrementMonth")
           }
       }
   },
   incrementMonth: (context) =>{
     // here my logic
   },
}

Upvotes: 2

Related Questions