2015-03-15 6 views
5

Pracuję tylko nad prostym prototypem wykorzystującym strumień i reaguję. Poprzednio, gdy użyłem React, wysłałem zdarzenia z komponentów potomnych do ich komponentów macierzystych (którzy zarejestrowali wywołania zwrotne na podrzędnym), a następnie zmienili stan w rodzicu.Reakcja/strumień - zdarzenia użytkownika komponentu potomnego - wszystko powinno być przekierowane przez dyspozytora

Po architekturze Flux, czy WSZYSTKIE zdarzenia powinny zostać zebrane za pośrednictwem Dispatchera? Na przykład, nawet proste zdarzenie związane z użytkownikiem, takie jak wybór z wyboru powinny być podnoszone za pośrednictwem tej sieci:

  1. stworzyć działania w składniku obsługi zdarzeń
  2. wysłać do dyspozytora
  3. wysyłający przesyła do sklepu
  4. sklep emituje zdarzenie zmienić widok kontrolera
  5. widok kontroler oddzwania do sklepu, aby odebrać zmiana

dzięki

+0

Od kiedy użyłeś absolutów takich jak "wszystkie wydarzenia", łatwo odpowiedzieć "nie". Wydarzenia takie jak keydown mogą nie mieć bezpośredniego wpływu na Sklep. Może na przykład klucz jest filtrowany lub jeśli to klawisz Enter uruchamia zdarzenie. Może chcesz zapytać o coś bardziej precyzyjnego? – WiredPrairie

+0

dzięki. jak byś zdecydował, czy wydarzenie powinno być kierowane do sklepu, czy po prostu obsługiwane w komponentach potomnych i rodzicielskich? – jonho

+4

@jonho Dobrym benchmarkiem jest, czy aplikacja danych/stan domeny, czy przejściowy stan komponentu? Stan nieustalony często sprawia, że ​​najlepiej jest zachować lokalny składnik.Podobnie, elementy wielokrotnego użytku powinny wykorzystywać stan lokalny, aby nie były powiązane z żadną konkretną implementacją/danymi strumienia. –

Odpowiedz

3

Akcji powinny być wysyłane na dwa scenariusze: wejście

  • użytkownika
  • Kiedy trzeba zmienić dane o poziomie rodzic ze składnika dziecka.

W twoim przypadku dla ciebie wysyłką akcja dla interakcji każdego użytkownika zależy od aplikacji i należy zapytać siebie trzy pytania:

  • Czy trzeba złożyć wniosek, żeby pozwolić backend wiedzieć o checkbox state?
  • Czy wykonujesz jakieś wywołanie API?
  • Czy inne składniki inne niż dzieci muszą o tym wiedzieć?

Jeśli przy co najmniej jednej z odpowiedzi na powyższe pytania brzmi "tak", należy wysłać akcję.

2

Myślę, że to wszystko zależy od zależności, jeśli twoje zdarzenie jest lub może powodować zależności (tj. Mieć wpływ na strumień informacji lub określać przyszłe otrzymywane informacje), wtedy powinieneś użyć akcji i sklepu.

Przykład: masz formularz z kilkoma polami wyboru Myślę, że nie trzeba korzystać z akcji i przechowywać, użytkownik może zmienić zdanie, zaznaczyć/odznaczyć rzeczy, ważne, gdy formularz jest wysyłany, a następnie uruchomić akcję .

Wręcz przeciwnie, jeśli to pole wyboru brzmi "Powiadom mnie, jeśli coś nowego" i wywołaj tworzenie słuchacza, powinieneś użyć akcji i zapisać.

Powiązane problemy