Я работаю над созданием компонента медиаплеера React, который обертывает тег HTML5 <video>
, и мне интересно, как этот тег и его события DOM связаны с архитектурой Flux.
Во Flux хранилище, которое слушает компонент, является его источником правды, но с некоторыми элементами, такими как тег <video>
, сама DOM поддерживает некоторое состояние, например paused
или currentTime
. Как согласовать это состояние с состоянием моего Магазина?
Пока у меня есть компонент Player
и компонент PlayerStore
. Когда происходят события <video>
DOM, я отправляю действия Flux, такие как handlePlay
, handlePause
и handleTimeUpdate
, для предоставления обновлений PlayerStore
, чтобы хранилище могло сохранить это состояние. Кроме того, мои собственные элементы управления плеером отправляют те же действия, но я не уверен, как «установить» состояние элемента <video>
только тогда, когда исходное событие было от элементов управления, а не событий <video>
; то есть я не хочу застревать в цикле, где, например:
<video>
отправляет событие DOM "мой тайм-код изменен"- Компонент слышит событие DOM и отправляет действие
- Магазин получает действие и обновляется новым тайм-кодом.
- Компонент, прослушивающий Store, слышит изменение и устанавливает (каким-то образом) новый тайм-код для элемента
<video>
. Однако в этом нет необходимости, так как элемент<video>
уже знал об изменении — именно он инициировал его несколько миллисекунд назад!
Как бы вы подошли к такому компоненту?
this.setState
)? И зачем отправлять действия для таких вещей, какhandlePlay
? Нужно ли что-то за пределами вашего компонента знать об этих событиях? - person ray hatfield   schedule 10.07.2015componentDidUpdate
, чтобы внести необходимые изменения в элемент<video>
. - person SimpleJ   schedule 10.07.2015