Setup:
yarn create react-app yingshaoxo --typescript
Method1:
import React from 'react';
import './App.css';const App: React.FC = () => {
return (
<div className="App">
<header className="App-header">
<Mirror></Mirror>
<p>
yingshaoxo is your father.
</p>
</header>
</div>
);
}interface Props { }interface State { };class Mirror extends React.Component<Props, State> {
video_reference = React.createRef<HTMLVideoElement>()async componentDidMount() {
if (this.video_reference.current) {
let video_stream: MediaStream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: "user" }, audio: false })
this.video_reference.current.srcObject = video_stream
}
}render() {
return (
<video ref={this.video_reference} id="player" autoPlay>
</video>
)
}
}export default App;
Method 2:
import React from 'react';
import './App.css';const App: React.FC = () => {
return (
<div className="App">
<header className="App-header">
<Mirror></Mirror>
<p>
yingshaoxo is your father.
</p>
</header>
</div>
);
}interface Props { }interface State { };class Mirror extends React.Component<Props, State> {
video_reference: HTMLVideoElement | null = null
set_video_reference = (element: HTMLVideoElement) => {
this.video_reference = element
}async componentDidMount() {
if (this.video_reference) {
let video_stream: MediaStream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: "user" }, audio: false })
this.video_reference.srcObject = video_stream
}
}render() {
return (
<video ref={this.set_video_reference} id="player" autoPlay>
</video>
)
}
}export default App;
References: