@@ -83,9 +83,11 @@ class Store {
8383
8484 dispatch ( type , ...payload ) {
8585 let silent = false
86+ let isObjectStyleDispatch = false
8687 // compatibility for object actions, e.g. FSA
8788 if ( typeof type === 'object' && type . type && arguments . length === 1 ) {
88- payload = [ type . payload ]
89+ isObjectStyleDispatch = true
90+ payload = type
8991 if ( type . silent ) silent = true
9092 type = type . type
9193 }
@@ -95,12 +97,20 @@ class Store {
9597 this . _dispatching = true
9698 // apply the mutation
9799 if ( Array . isArray ( mutation ) ) {
98- mutation . forEach ( m => m ( state , ...payload ) )
100+ mutation . forEach ( m => {
101+ isObjectStyleDispatch
102+ ? m ( state , payload )
103+ : m ( state , ...payload )
104+ } )
99105 } else {
100- mutation ( state , ...payload )
106+ isObjectStyleDispatch
107+ ? mutation ( state , payload )
108+ : mutation ( state , ...payload )
101109 }
102110 this . _dispatching = false
103- if ( ! silent ) this . _applyMiddlewares ( type , payload )
111+ if ( ! silent ) {
112+ this . _applyMiddlewares ( type , payload , isObjectStyleDispatch )
113+ }
104114 } else {
105115 console . warn ( `[vuex] Unknown mutation: ${ type } ` )
106116 }
@@ -273,9 +283,10 @@ class Store {
273283 *
274284 * @param {String } type
275285 * @param {Array } payload
286+ * @param {Boolean } isObjectStyleDispatch
276287 */
277288
278- _applyMiddlewares ( type , payload ) {
289+ _applyMiddlewares ( type , payload , isObjectStyleDispatch ) {
279290 const state = this . state
280291 const prevSnapshot = this . _prevSnapshot
281292 let snapshot , clonedPayload
@@ -285,10 +296,17 @@ class Store {
285296 }
286297 this . _middlewares . forEach ( m => {
287298 if ( m . onMutation ) {
299+ const mutation = isObjectStyleDispatch
300+ ? m . snapshot
301+ ? clonedPayload
302+ : payload
303+ : m . snapshot
304+ ? { type, payload : clonedPayload }
305+ : { type, payload }
288306 if ( m . snapshot ) {
289- m . onMutation ( { type , payload : clonedPayload } , snapshot , prevSnapshot , this )
307+ m . onMutation ( mutation , snapshot , prevSnapshot , this )
290308 } else {
291- m . onMutation ( { type , payload } , state , this )
309+ m . onMutation ( mutation , state , this )
292310 }
293311 }
294312 } )
0 commit comments