2016-05-20 5 views
1

Ich bin neu in Flux/React Native.Unterschied zwischen Versand und emittieren in Flux/React Native

Ich bin ziemlich verwirrt über Versand vs emittieren mit Flux.

Was ist der Hauptunterschied zwischen ihnen? Und was passiert, wenn ich denselben Aktionstyp im Versand verwende und aussende.

Zum Beispiel:

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

Antwort

4

In Flux, Ereignisse durch den Laden emittiert werden, eine Änderung in ihrem Zustand anzeigt. Dieses Änderungsereignis wird von Ansichten angehört. Dadurch wird eine Ansicht aufgerufen, um den neuen Status aus dem Speicher abzurufen. Wohlgemerkt, das Ereignis enthält niemals Nutzinformationen/Informationen über den neuen Status. Es ist wirklich genau das, was es liest - ein Ereignis.

Aktionen sind etwas anders. Während sie tatsächlich Ereignisse sind, sind sie Dinge, die in unserer Domäne vorkommen, zB Artikel in den Warenkorb legen. Und sie tragen eine Nutzlast, die Informationen über die Aktion enthält, z. B.

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

Aktionen sind ‚geschickt‘ von den Ansichten und dem Shop (s) reagiert auf den Versand von möglicherweise seinen Zustand zu ändern und eine ‚Änderung emittierenden ' Veranstaltung.

So im Allgemeinen:

  1. Eine Ansicht, die eine Aktion mit einem Payload Versendungen (üblicherweise aufgrund einer Interaktion des Benutzers) über den Dispatcher
  2. Der Speicher (die vorher sich selbst mit dem Dispatcher registriert hatte)
    ist benachrichtigt die Aktion und verwendet die Nutzlast, um ihren Status zu ändern und ein Ereignis auszulösen.
  3. Die Ansicht (die sich zuvor beim Geschäft registriert hatte) wird über das Änderungsereignis benachrichtigt, das bewirkt, dass sie den neuen Status aus dem Geschäft erhält und sich selbst ändert.

Das ist also der Unterschied. Und über die Frage "Benutze den gleichen Aktionstyp im Versand und emittiere" macht es eigentlich keinen Sinn, oder?

Ich schlage vor, Sie dieses Blog-Post lesen - http://blog.andrewray.me/flux-for-stupid-people/ (Der Titel keinen Anstoß bedeutet BTW :))

Sie bereits wissen, aber ich sage es noch einmal: A unidirectional data flow ist von zentraler Bedeutung für die Flux-Muster . Das bedeutet, dass Daten (nicht Kontrolle) immer in eine Richtung fließen.

+0

Sehr klar, ich habe verstanden. Vielen Dank. – ronin1184

Verwandte Themen