@@ -83,9 +83,11 @@ class Store {
83
83
84
84
dispatch ( type , ...payload ) {
85
85
let silent = false
86
+ let isObjectStyleDispatch = false
86
87
// compatibility for object actions, e.g. FSA
87
88
if ( typeof type === 'object' && type . type && arguments . length === 1 ) {
88
- payload = [ type . payload ]
89
+ isObjectStyleDispatch = true
90
+ payload = type
89
91
if ( type . silent ) silent = true
90
92
type = type . type
91
93
}
@@ -95,12 +97,20 @@ class Store {
95
97
this . _dispatching = true
96
98
// apply the mutation
97
99
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
+ } )
99
105
} else {
100
- mutation ( state , ...payload )
106
+ isObjectStyleDispatch
107
+ ? mutation ( state , payload )
108
+ : mutation ( state , ...payload )
101
109
}
102
110
this . _dispatching = false
103
- if ( ! silent ) this . _applyMiddlewares ( type , payload )
111
+ if ( ! silent ) {
112
+ this . _applyMiddlewares ( type , payload , isObjectStyleDispatch )
113
+ }
104
114
} else {
105
115
console . warn ( `[vuex] Unknown mutation: ${ type } ` )
106
116
}
@@ -273,9 +283,10 @@ class Store {
273
283
*
274
284
* @param {String } type
275
285
* @param {Array } payload
286
+ * @param {Boolean } isObjectStyleDispatch
276
287
*/
277
288
278
- _applyMiddlewares ( type , payload ) {
289
+ _applyMiddlewares ( type , payload , isObjectStyleDispatch ) {
279
290
const state = this . state
280
291
const prevSnapshot = this . _prevSnapshot
281
292
let snapshot , clonedPayload
@@ -285,10 +296,17 @@ class Store {
285
296
}
286
297
this . _middlewares . forEach ( m => {
287
298
if ( m . onMutation ) {
299
+ const mutation = isObjectStyleDispatch
300
+ ? m . snapshot
301
+ ? clonedPayload
302
+ : payload
303
+ : m . snapshot
304
+ ? { type, payload : clonedPayload }
305
+ : { type, payload }
288
306
if ( m . snapshot ) {
289
- m . onMutation ( { type , payload : clonedPayload } , snapshot , prevSnapshot , this )
307
+ m . onMutation ( mutation , snapshot , prevSnapshot , this )
290
308
} else {
291
- m . onMutation ( { type , payload } , state , this )
309
+ m . onMutation ( mutation , state , this )
292
310
}
293
311
}
294
312
} )
0 commit comments