【发布时间】:2020-05-27 17:22:53
【问题描述】:
我想使用 React Hook 的 useRef 设置视频流的 src 对象,但视频引用为空,我收到错误:TypeError: Cannot set property 'srcObject' of null at getMedia。我正在使用useEffect 调用记录参考的函数。
奇怪的是我同时看到了null 和电流值。查看控制台日志截图:
我已阅读 useRef 上的文档,并查看了 Stack Overflow 和 Github 上的所有其他帖子,但无法弄清楚这一点。最近的帖子是this one。我做错了什么?
精简代码:
const App = () => {
const webcamRef = useRef(null)
useEffect(() => {
getMedia();
}, [webcamRef])
const getMedia = async () => {
try {
console.log(webcamRef);
let stream = await navigator.mediaDevices.getUserMedia({ video: true });
webcamRef.current.srcObject = stream;
} catch (err) {
console.error(err);
}
};
return <video id='webcam' ref={webcamRef} />
}
【问题讨论】:
-
Chrome 控制台的问题是它不能反映你登录时对象的状态;当控制台 UI 评估您将看到输出的对象时。因此,您在 ref 为 null 时登录,但当 UI 在 Chrome 中更新时,它已被填充。
标签: javascript reactjs react-hooks webcam getusermedia