2016-06-01 8 views
1

Ich bin nicht sicher, welche Richtung am besten ist, wenn ein zentrales Audioobjekt für eine Sound-Anwendung erstellt wird, die über mehrere Player verschiedene Interaktionspunkte in der App hat.Zentralisierte Audioeinheit mit Redux?

Von dem, was ich denke, gibt es ein paar Optionen: Instantiieren und manipulieren Sie das Audio-Objekt (Wiedergabe, Pause, laden usw.) und die Spieler Zustand (ob ein Stück spielt, pausiert, Pufferung usw.) in einem Spieler Reducer. Instantiiere und manipuliere den Audio- und Player-Status in den Spieleraktionen. Oder setzen Sie das Audioobjekt außerhalb des redux-Flusses (z. B. in einem lib-Ordner) und interagieren Sie direkt mit Methoden auf der Komponente parallel zu Dispatch-Ereignissen, um den Player-Status in Einklang mit dem Audio zu halten.

Hier ist ein Beispiel von Audiodaten im Speicher (nicht redux) - https://github.com/gillesdemey/Cumulus/blob/master/app/js/stores/currentTrackStore.js

Und hier ist es als separates Modul, an der Seite von Aktionen ausgeführt wird, dass der Spieler den Zustand ändern - https://github.com/jhabdas/lumpen-radio/blob/master/src/lib/audio.es6

Hat jemand irgendwelche Gedanken in Bezug auf Best Practices, oder irgendwelche Vorschläge, wie man es angehen kann.

Prost

Antwort

2

tun Definitiv nicht das Audio-Objekt selbst innerhalb eines Getriebes manipulieren. Reducers sollen rein sein und sich nur darum kümmern, Updates auf den Status anzuwenden.

Darüber hinaus sind die beiden typischen Orte, um etwas Persistentes wie diese zu setzen, entweder in einer Middleware oder in einer UI-Komponente. Die Seite Middleware meines Redux-Addons-Katalogs zeigt zahlreiche Beispiele, wie man einige Stateful-externe Objekte in eine Middleware einfügt.

+0

Danke für die Antwort. Das verstehe ich bei Reduzierern, weshalb ich diesen Weg nicht gegangen bin. Middleware funktioniert momentan für mich - ich bin mir nicht sicher, wo ich den Audio-Listener am besten finde (Fortschritt usw.). Nebenbei bemerkt - was halten Sie davon, etwas wie die verstrichene Zeit im Laden zu behalten - z.B. Verteilen der aktuellen Zeit des Audio ein jedes Mal update. Auf diese Weise kann die Zeit zentralisiert und leicht abgerufen werden. oder ist das zu leistungsschwach? – pwlarry