【问题标题】:Centralised audio unit with Redux?带有 Redux 的集中式音频单元?
【发布时间】:2016-09-30 16:36:35
【问题描述】:

我不确定在为声音应用程序创建集中式音频对象时最好的方向是,该声音应用程序通过多个播放器在应用程序周围具有不同的交互点。

据我所知,有几个选项:在播放器减速器中实例化和操作音频对象(播放、暂停、加载等)和播放器状态(曲目是否正在播放、暂停、缓冲等)。在播放器动作中实例化和操作音频和播放器状态。或者让音频对象位于 redux 流之外(例如在 lib 文件夹中),并使用组件上的方法直接与其交互,同时调度事件以使播放器状态与音频保持一致。

这是商店中的音频示例(不是 redux)-https://github.com/gillesdemey/Cumulus/blob/master/app/js/stores/currentTrackStore.js

这里它作为一个单独的模块,沿着改变玩家状态的侧面动作运行 - https://github.com/jhabdas/lumpen-radio/blob/master/src/lib/audio.es6

有没有人对最佳实践有任何想法,或者对如何处理它有任何建议。

干杯

【问题讨论】:

    标签: javascript audio reactjs redux flux


    【解决方案1】:

    绝对在reducer内部操作音频对象本身。 Reducers 应该是纯粹的,并且只关心将更新应用于状态。

    除此之外,放置类似这样的持久性内容的两个典型位置是在中间件或 UI 组件中。我的 Redux 插件目录的 Middleware 页面显示了许多将一些有状态的外部对象放入中间件的示例。

    【讨论】:

    • 感谢您的回答。这就是我对减速器的理解,这就是我没有走那条路的原因。中间件现在对我有用 - 只是不确定将事件侦听器添加到音频(进度等)的最佳位置。在旁注中-您对在商店中保留诸如经过的时间之类的内容有何看法-例如每次更新时调度音频的当前时间。通过这种方式,可以轻松地集中和访问时间。还是这样的性能太重了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多