2016-05-20 6 views
1

Flux/React Nativeの新機能です。Flux/React Nativeのディスパッチとエミットの違い

Fluxで使用しているディスパッチ対エミットについてはかなり混乱しています。

これらの主な違いは何ですか?ディスパッチで同じアクションタイプを使用して放出するとどうなりますか?例えば

:フラックス中

Dispatcher.dispatch({ 
    actionType: 'ACTION1' 
}); 
SomeStore.emit('ACTION1'); 

答えて

4

、その状態の変化を示すストアによって放出されるイベント。この「変更」イベントはビューによって聴かれます。これにより、ストアから新しい状態を取得するビューが表示されます。気になるのは、イベントには新しい状態に関するペイロード/情報は含まれません。それは本当にそれが読んでいるもの、つまりイベントです。

アクションは少し異なります。彼らは事実ではありますが、私たちの領域で起こるものです。例えば、商品をカートに入れる。そして、彼らは、アクションに関する情報が含まれたペイロードを運ぶ例えば、

{ 
     id: ‘add-item-to-cart’, 
     payload: { 
     cartId: 123, 
     itemId: 1234, 
     name: ‘Box of chocolates’, 
     quantity: 1 
     } 
    } 

アクションビューおよびストア(複数可)から「派遣」おそらくその状態を変更し、「変更を放出することにより、発送には対応しています'イベント。

したがって、基本的に:(以前にディスパッチャに自身を登録していた)

  1. ビューはディスパッチャ
  2. 介して(通常によるユーザ対話に)ペイロードを持つアクションをディスパッチストア
    れますアクションを通知され、ペイロードを使用して状態を変更し、イベントを発行します。
  3. 以前にストアに登録されていたビューには、ストアから新しい状態を取得して自身を変更させる変更イベントが通知されます。

だから違いがあります。 「ディスパッチとエミットで同じアクションタイプを使用する」という質問については、実際には意味がありません。私はあなたがこのブログの記事を読むことをお勧め

- あなたはすでにこれを知っているhttp://blog.andrewray.me/flux-for-stupid-people/(タイトルは:)ところで悪気がないことを意味する)

が、私は再びそれを言うよ:unidirectional data flowはフラックスパターンの中心であります。これは、データ(制御ではない)が常に一方向に流れることを意味します。

+0

非常に明確で、わかりました。どうもありがとうございました。 – ronin1184

関連する問題