Mam scenariusz, w którym mam ochotę wysłać akcję w odpowiedzi na inną akcję i nie wiem, jak najlepiej to rozwiązać.Wysyłanie dalszych działań podczas obsługi działań
Powództwo zostało wysłane w odpowiedzi na odpowiedzi HTTP, coś jak:
type: 'auth'
data: { username: 'tom' }
Bo reakcja przebiegła pomyślnie, chcę wysyłką akcję wysłać użytkownikowi na stronie głównej:
type: 'navigate'
date: { where: 'home' }
Wydaje mi się to rozsądnym posunięciem: stało się to, więc teraz chcę, żeby to się stało. Problem w tym, że dyspozytor strumienia nie pozwala na to, ponieważ nadal jesteśmy w cyklu wysyłki. Rozumiem, dlaczego wysyłanie podczas wysyłki jest złym pomysłem.
Niektórzy ludzie rozwiązali to z wieloma dyspozytorami, podczas gdy wydaje się, że autorzy Flux są pewni, że potrzebujesz tylko jednego i że musisz przemyśleć swoje sklepy.
Nie widzę sposobu, w jaki mogłem zrestrukturyzować swoje sklepy, aby to ułatwić, nie zaciemniając intencji. Moje UserStore
wie o działaniach auth
, a moje RouteStore
wie o działaniach . Sugerowane są wszelkie sugestie, w jaki sposób można by zmienić sklepy, aby to ułatwić.
Czuję się jak setImmediate
będzie działać, ale wydaje się nieco brudny. Myślę też, że dyspozytor, który stał w kolejce, może pomóc, ale mogę poczuć w moich kościach, że może to spowodować nieprzyjemne problemy.
Jakie jest najlepsze wyjście z tego?
Dzięki za odpowiedź. Wydaje się trochę dziwne, aby magazyn trasy zareagował działaniami, ale wydaje mi się, że nie mam jeszcze dobrych opinii o sklepach. Wydaje mi się, że właśnie tam logika aplikacji trafia do sklepów, co sprawia wrażenie trochę niewygodnego, ale potem większość React/Flux początkowo czuje się do tyłu, a na końcu działa znacznie lepiej niż "stary sposób" na końcu! – Tom
Wypróbuję to i zaakceptuję odpowiedź, jeśli się uda. Być może będę musiała trochę zmienić router. – Tom
Sklepy powinny zawierać prawie całą logikę aplikacji, oprócz stanu aplikacji. Są to locus wszelkiej kontroli w aplikacji Flux. Ktoś mógłby narysować paralelę między Flux przechowuje ideał "grubych modeli" w niektórych społecznościach MVC, takich jak Rails. Są "grube", ponieważ tam żyje cały stan i logika. – fisherwebdev