Vuexのmutationをつかってデータ(state)を更新する際、
ペイロード(引数)の渡し方を勘違いしており、複数の値がうまく渡せませんでした。
結論
こんなふうに書きます。
※ store.jsというファイル名でvuex用のJSファイルを作り、main.jsに読み込ませています。
stateおよびmutationはstore.jsに書いています。
mutation側
store.js
//hogeとfugaを引数にするhogehogeミューテーション
mutations:{
hogehoge( state, {hoge, fuga}){
//hogeとfugaを使って色々やる処理を書く
}
}
コンポーネント(mutationを呼び出す)側
methods:{
fugafuga(){
this.$store.commit(
//第1引数 ミューテーション名
"hogehoge" ,
//第2引数 ペイロード
{ hoge : "01" ,
fuga : "1" })
}
}
ポイントはペイロードを{}
で囲ってオブジェクトにしていることです
間違ってたこと
ペイロードを{ }
で囲わず、そのまま複数並べていました。
mutation側 ダメな例
store.js
mutations:{
hogehoge( state, hoge, fuga){
//以下略
コンポーネント(mutationを呼び出す)側 ダメな例
this.$store.commit(
"hogehoge" ,
"01" ,
"1" )
ちなみに、これも駄目です
this.$store.commit(
"hogehoge" ,
{hoge : "01" },
{fuga : "1" })
まとめ
ペイロードはあくまで"第2引数"であるので、複数の値を渡す際にはオブジェクトにまとめ、「一つの引数」として渡す必要があります。
なお、公式リファレンスでも(引数の単複問わず)オブジェクト形式を推奨しています。