Я пытаюсь преобразовать код в примере классификации изображений ML5 ( Ссылка ) в мой компонент React, а именно:
class App extends Component {
video = document.getElementById('video');
state = {
result :null
}
loop = (classifier) => {
classifier.predict()
.then(results => {
this.setState({result: results[0].className});
this.loop(classifier) // Call again to create a loop
})
}
componentDidMount(){
ml5.imageClassifier('MobileNet', this.video)
.then(classifier => this.loop(classifier))
}
render() {
navigator.mediaDevices.getUserMedia({ video: true })
.then((stream) => {
this.video.srcObject = stream;
this.video.play();
})
return (
<div className="App">
<video id="video" width="640" height="480" autoplay></video>
</div>
);
}
}
export default App;
Однако это не работает.Сообщение об ошибке говорит, что Unhandled Rejection (TypeError): Cannot set property 'srcObject' of null
.
Я могу себе представить, video = document.getElementById('video');
, вероятно, не может захватить элемент по идентификатору.Поэтому я попытался
class App extends Component {
video_element = <video id="video" width="640" height="480" autoplay></video>;
...
render() {
...
return (
<div className="App">
{video_element}
</div>
);
}
}
, который тоже не работал.Я запутался в том, что будет правильным методом для реализации этого?
Любая помощь приветствуется, спасибо!