Ich habe ein Szenario, in dem ich das Gefühl habe, dass ich eine Aktion als Reaktion auf eine andere Aktion senden muss, und ich weiß nicht, wie ich das am besten lösen kann.Weitere Aktionen bei der Bearbeitung von Aktionen absetzen
Eine Aktion wird als Antwort auf eine HTTP-Antwort versendet, so etwas wie:
type: 'auth'
data: { username: 'tom' }
Da diese Antwort erfolgreich war, möchte ich eine Aktion schicken den Benutzer auf die Homepage zu senden:
type: 'navigate'
date: { where: 'home' }
Das scheint mir ein vernünftiger Fluss zu sein: dieses Ding ist passiert, also möchte ich, dass dieses Ding passiert. Das Problem ist, dass der Flux Dispatcher dies nicht erlaubt, da wir uns immer noch im Versandzyklus befinden. Ich verstehe, warum Dispatching während der Disposition eine schlechte Idee ist.
Einige Leute haben dies mit mehreren Dispatcher gelöst, während es scheint, dass die Flux-Autoren sicher sind, dass Sie nur einen brauchen und dass Sie Ihre Geschäfte überdenken müssen.
Ich sehe nicht, wie ich meine Geschäfte umstrukturieren könnte, um dies zu erleichtern, ohne die Absicht zu verschleiern. Mein UserStore
weiß über auth
Aktionen, und mein RouteStore
weiß über navigate
Aktionen. Irgendwelche Vorschläge, wie die Geschäfte geändert werden könnten, um dies zu erleichtern, würden geschätzt werden.
Ich fühle mich wie ein setImmediate
würde funktionieren, aber es scheint ein bisschen schmutzig. Ich denke auch, dass ein Dispatcher, der Aktionen in die Warteschlange stellte, helfen könnte, aber ich kann in meinen Knochen spüren, dass dies unangenehme Probleme verursachen könnte.
Was ist der beste Ausweg?
Danke für die Antwort. Es scheint etwas merkwürdig zu sein, dass der Routenspeicher mit Aktionen reagiert, aber ich denke, ich habe noch nicht das Gefühl, dass die Geschäfte richtig liegen. Ich denke, hier kommt die Anwendungslogik in die Läden, was sich ein wenig unangenehm anfühlt, aber andererseits fühlen sich die meisten von React/Flux zunächst rückwärts und dann am Ende viel besser als der "alte Weg"! – Tom
Ich werde das ausprobieren und die Antwort akzeptieren, wenn es klappt. Ich muss meinen Router vielleicht ein wenig nachjiggen. – Tom
Stores sollten neben Ihrem Anwendungsstatus fast die gesamte Anwendungslogik enthalten. Sie sind der Ort aller Kontrolle innerhalb einer Flux-Anwendung. Man könnte eine Parallele ziehen zwischen Flux speichert das Ideal von "Fettmodellen" in einigen MVC-Gemeinschaften, wie Rails. Sie sind "fett", weil dort der ganze Staat und die Logik lebt. – fisherwebdev