Redux - 如何传递 MediaStream - 我应该使用全局变量还是在存储中存储不可序列化的对象

Jer*_*emy 5 html5-audio reactjs redux mediastream

我在整个网络应用程序中记录用户麦克风的音频(即他们使用它并将其流式传输到后端的整个过程)。我调用navigator.mediaDevices.getUserMedia()一个组件,比如在根级别。

MediaRecorder当我单击按钮时,我还可以录制流中的部分音频(将状态从 更改inactiverecording,以便稍后播放他们所说的内容)。问题是我需要将 传递给MediaStreamMediaRecorder而不将其传递给一堆组件。MediaStream是不可序列化的,因此根据 Redux 建议,我不应该将其存储在那里。将其存储在window对象中并在整个项目中使用它的最简单方法是什么?

看起来有点脏,必须有更好的方法来做到这一点。我可以将它存储在 redux 中,但我想我希望在某个时候进行时间旅行调试。我应该使用中间件或其他东西来保存我的吗MediaStream

<AudioRecorder>
   <Timer />
   <OtherPage>
       <several levels down>
           <RecordButton />
       </several levels down>
   </OtherPage
</AudioRecorder>

Run Code Online (Sandbox Code Playgroud)

只是想知道这里最好的方法是什么?使用 React Context API 值得吗?那时我不妨将其存储在 redux 中?

太长了;我应该如何在我的 React 应用程序中全局访问媒体流