type と payload は action の中身の事です。下記記事が参考になります。
Flux Standard Action - Qiita
実装上は、action は単なる Object で中身は何でもいいです。action は dispatcher を通じて store に渡されます。action の中身を吟味するのは store の役目です。何でもいいと言いながら、ある程度決まりを作っておかないと、action creator がどう action を作れば良いのか、store がどう action を判断すれば良いのかわかりません。そこで、標準的な作り方として、{type: 〜, payload: 〜}
(他にもプロパティがある場合があります)という Object を渡すとしています。type プロパティには action の種類が入ります。ページ移動とか、ログインとか、閉じるとかです。payload プロパティには、その行動をするのに必要な情報が入ります。例えば、ページ移動しようにもどこに移動するかの情報が無ければ、移動できません。そういうときに payload に移動すべき場所を一緒にくっつけておきます。場合によっては payload が無い場合もあり得ます。例えば、ログアウトという action をする場合、特に他の情報は必要ありません。
もう一つ「通常は定数のリスト」となっているところの意味について説明します。action の type は action creator と store の両方で統一されてなければなりません。type として渡すのは通常文字列または Symbol です。さて、ログインするにも"LOGIN"なのか"LOGON"なのか統一されてなかったらどうなるでしょうか?うまく aciton が store に伝わるわけがありません。このように、action creator が"LOGIN"
と文字列を直接書いてしまうと、些細なミスで動かないとなってしまいます。そこで、const LOGIN = "LOGIN";
のような形で type に設定するものを定数として定義しておきます。action creator が actionを作るときは定数を使い、store 側もチェックするときは定数を使います。こうやって定数にしておけば、もし、勘違いでLOGON
と書いても、そんな定数はないよとエラーになってくれます。エラーになる=テストの時に判明する、原因が特定しやすいと言うことです。これがもし文字列だったら、"LOGON"
と書かれても、store は知らない文字列だから単に無視してしまいます。エラーにもならず、動かないだけです。そんな状態で原因を追及しようにも、action creator が action を間違っている作っている可能性、dispachtcher が渡していない可能性、store のログイン処理自体が間違っている可能性と、調べるところがたくさん出てきて大変です。そういったイージーミスをなくすために、定数のリストとして action の type を定義しておき、定数でしか利用しないようにするといいということです。
なお、サイトを見る限り、ちょっと直訳というか、技術にあまり詳しくない人が訳したという感じで、良い翻訳とは言えないかと思います。原文をあたってみた方が良いかもしれません。該当部分の私訳を載せておきます。
A cartoon guide to Flux より
The action creator creates an action with a type and a payload. The type will be one of the types that you have defined as actions in your system (usually a list of constants). An example of an action would be something like MESSAGE_CREATE or MESSAGE_READ.
私訳(超意訳)
動作屋(action creator)は、動作の種類(type)と付加情報(payload)が書かれた動作定義書(action)を作成します。この種類は、アプリケーションシステム内で動作(action)であると定義された種類一覧(通常、定数のリストとして定義されます)の中の一つです。動作種類の例として、メッセージ作成(MESSAGE_CREATE)
やメッセージ読込(MESSAGE_READ)
のようなものがあります。
やり取りするオブジェクトとしての aciton と、動作そのものとしての action が混ざっているのでちょっとわかりにくいです(ネイティブの人にとってはわかるのかも知れませんが)。action について、「動作」を渡すと言うよりも「動作が書かれた何か」をやり取りしてると捉えるといいかと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/31 04:01