前置き
みなさんはVuexのactions
でcontext
部分を
どのように書いていますか
mutations
や他のactions
を
呼び出さない場合の話です
呼び出さない場合というのは
Firebaseなどに送信さえできればよい、
それだけで完結するものですね
また、第二引数以降に
複数の値を渡したい場合は
どうしていますか?
今回はその
第一引数context
と
第二引数に焦点を当てました
第一引数context
今まではcommit
やdispatch
を呼び出さない場合
こんな感じで書いていました
submit({ context }, payload)
実際、公式のサンプルコードでは(context)
となっています。
アクション
ただ、特に使うものがないのに
わざわざcontext
を書く必要がないな〜
ということで最近はこうしてます
submit(_, payload)
私は上記の公式コードを見て
こう思っていました
絶対にcontext
と
表記する必要があるものなんだ
しかしこちらを見てみると、
呼び出さない場合の指定は
特になさそう…
actions
ということで、
引数なので自由に名前をつけられる
ということが分かりました
わざわざ
「呼び出さない場合は自由です」
と明記されてはいませんが、
引数なんでね…
というわけです
これによって視認性もアップactions
をパッとみただけで
送信するactions
はこれだな
とすぐ分かります。
また、
仮にgetData(_)
になっていたら
命名的に普通は取得してstate
の上書きするのにcommit
ないよ?
などの間違いにも気づきやすくなります
第二引数
こちらも公式を確認すると…
そして、第 2 引数の
actionspayload
があれば、それを受け取ります。
引数は第二までしか渡せないということですね
(厳密に言うと第三引数も取れるのですが、
そこには別のデータが入っていたりします)
そしてこちらも命名は自由。
mutationsでも全く同じです。
では複数渡したい場合はどうするのか、
それはObject
にして
1つのまとまりにすればOK{ プロパティ: 値, プロパティ: 値 }
受け取る時はpayload
でObject
の
1つのまとまりを受け取りますsubmit(_, payload)
公式のままpayload
ですが、
なんでもOKです
もしくはObject
で受け取ってもOK
まとめ
引数をシンプルにすることで
見やすくなりました
第一引数では
自分の思い込みではないかと
疑うことって大事だな〜
と感じました。
ちなみに_
の書き方は
TSを導入している人が
結構使うらしいです。
TSの記事も書きたいなぁ…
第二引数は個人的にpayload
が好きだったのですが、
値を書く時に、
いちいち渡しているものを
確認しないといけないので、Object
の方に変えていこうかと思ってます