Reactjs 拍摄照片并录制视频

Reactjs 拍摄照片并录制视频,reactjs,react-native,Reactjs,React Native,我的目标是在按住相机按钮时录制视频,同时在点击相机按钮时拍摄照片。知道我做错了什么吗 const[video,setVideo]=useState(null); const[recording,setRecording]=使用状态(false); const cameraRef=createRef(); const onLongPressButton=()=>{ 设置录制(真); startRecord(); }; const startRecord=async()=>{ 设置录制(真); 控制

我的目标是在按住相机按钮时录制视频,同时在点击相机按钮时拍摄照片。知道我做错了什么吗

const[video,setVideo]=useState(null);
const[recording,setRecording]=使用状态(false);
const cameraRef=createRef();
const onLongPressButton=()=>{
设置录制(真);
startRecord();
};
const startRecord=async()=>{
设置录制(真);
控制台日志(“记录”);
如果(当前摄影机引用){
设置录制(真);
const recordedVideo=wait cameraRef.current.recordAsync();
设置视频(录制视频);
}
};
const stopRecord=async()=>{
等待cameraRef.current.stopRecording();
控制台日志(“停止记录”);
设置录制(假);
};
const handlePhoto=async()=>{
if(cameraRef.current&&!录制){
let photo=wait cameraRef.current.takePictureAsync({});
log(photo.uri);
}否则{
停止记录();
}
};
这是我的相机按钮组件:

{
等待cameraRef.current.stopRecording();
控制台日志(“停止记录”);
设置录制(假);
}}
delayLongPress={50}
/>

问题似乎不在于摄像头或触摸处理,而在于使用了
createRef
而不是
useRef
。请注意,在您的情况下,在函数组件中使用,
createRef
将在每个渲染上创建一个新的ref。将其替换为
useRef
,以便整个渲染中的引用保持不变:

 const cameraRef = useRef();

你能解释一下你遇到的问题吗?是否无法在录制时轻按,是否在您轻按拍照时停止录制,是否继续录制但不拍摄照片?@MarekLisik当前,代码拍摄照片。但是,当我使用onLongPress时,录制功能会启动,但当我停止录制时,承诺不会返回。谢谢您的回答。当我打开你的零食,它显示一个空白页。你能检查一下吗?@RogerStaxx它在我这方面工作得很好(在设备上运行它们)——也就是说,我已经更新了答案,只包含了我所做的更改。工作!救生员谢谢!