У меня есть простое приложение React с видеоплеером и диаграммой, отображающей данные о видео.Оба находятся в своих собственных компонентах на верхнем уровне:
class App extends Component {
...
render() {
return (
<div className="App">
<VideoDisplay .../>
<MetricsDisplay .../>
</div>
)
}
}
Внутри VideoDisplay.js
есть элемент <video>
, которым я хочу управлять, в частности, путем поиска его игровой позиции, что я могу сделать, используя videoElement.currentTime=seekToTime
.Я хочу управлять этим с помощью элемента MetricsDisplay
: если я нажимаю на график, я хочу, чтобы видео искало то время, на которое нажали.Но для этого, похоже, мне нужно вызвать функцию в VideoDisplay.js
из App.js
, когда она получает щелчок от MetricsDisplay.js
.Но это обязательно, а не декларативно, и у меня действительно возникают проблемы с реализацией этого в React.Это вообще возможно?Как еще я могу указать видео в элементе для поиска, вызванное щелчком по элементу родного элемента?
У меня есть обходной путь, который я опубликую в качестве ответа, но я очень уверен, что он довольно слабыйоптимальный с точки зрения дизайна, и вызовет головные боли обслуживания кода.Так какой метод лучше?Что такое «Реагировать», чтобы сделать что-то подобное?
См. Прикрепленный скриншот: при нажатии на график справа видео должно стремиться к нажатому моменту времени.