為什麼要特別提一下 Payload
?
是因為像 mutations
跟 actions
,其實都只能傳一個自定參數進去,如果有多個參數要使用時,可能就會跳錯,怕有人也遇到相同的困擾,所以特別提一聲。
舉例來說,像下面這個範例 state.count += x
,只有傳遞 x
一個參數是沒問題的。
// ...
mutations: {
increment (state, x) {
state.count += x
}
}
那如果是這樣,傳了 x, y
兩個參數,就會遇到 undefined
的跳錯囉!
// ...
mutations: {
increment (state, x, y) {
state.count += x * y
}
}
如果今天我們需要傳入多個參數到底怎麼辦呢?就可以使用 Payload
(載荷)了。
使用方式其實很簡單,就是將要傳入的參數封裝成物件,如下範例
mutations
以 payload
作為傳入的參數
// ...
mutations: {
increment (state, payload) {
state.count += payload.x * payload.y
}
}
使用時傳入物件 {x: 5, y: 10}
store.commit('increment', {
x: 5,
y: 10
})
這樣就可以囉,是不是很簡單呢?
雖然看起來很簡單,但其實這是運用到ES6的新特性-解構賦值,實際上我對此也是懵懵懂懂,所以無法細說
若有興趣想深入研究的捧由,可以以此關鍵字去搜尋研究,也歡迎與我分享囉!