Ну, я нашел, что было не так.Согласно docs мне нужно использовать свойство current
, чтобы сделать узел доступным.Итак, полный рабочий пример моего компонента веб-камеры:
export class WebcamStream extends React.Component {
constructor(props) {
super(props);
this.videoTag = React.createRef()
}
componentDidMount() {
// getting access to webcam
navigator.mediaDevices
.getUserMedia({video: true})
.then(stream => this.videoTag.current.srcObject = stream)
.catch(console.log);
}
render() {
return <video id={this.props.id}
ref={this.videoTag}
width={this.props.width}
height={this.props.height}
autoPlay
title={this.props.title}></video>
}
}
this.setState
был удален до прямого srcObject
изменения от обещания, но я не уверен, что это способ React.Может быть, более правильно перемещается код this.videoTag.current.srcObject = stream
как обратный вызов setState?