我正在构建一个包含HTML5 <video>
标记的React媒体播放器组件,并且我想知道该标记及其DOM事件与Flux架构的关系。
在Flux中,组件侦听的存储是其真实来源,但是对于<video>
标记之类的元素,DOM本身会维护某些状态,例如paused
或{{1} }。如何将该状态与我的商店的状态相协调?
到目前为止,我已经获得了currentTime
组件和Player
。当PlayerStore
DOM事件发生时,我一直在调度Flux操作,例如<video>
,handlePlay
和handlePause
,以便为handleTimeUpdate
提供更新,以便商店可以保持这种状态。同样,我自己的自定义播放器控件会调度相同的操作,但我不确定如何设置&#34;设置&#34;仅当原始事件来自控件而不是PlayerStore
事件时,<video>
元素的状态;也就是说,我不想被困在一个循环中,例如:
<video>
发送&#34;我的时间码已更改&#34; DOM事件<video>
元素上设置(以某种方式)新的时间码。但是,没有理由,因为<video>
元素已经知道了这一变化 - 它是几毫秒之前首先触发它的那个!你会如何处理这样的组件?
答案 0 :(得分:0)
我建议在shouldComponentUpdate中检查你的视频标签当前状态,如果它已经处于目标状态,则跳过重新呈现。