Files
testing-tool/hooks/useRecorder.tsx
T
2026-01-27 23:09:57 +08:00

42 lines
832 B
TypeScript

import {useRef, useState} from "react";
import {record} from "rrweb";
export const useRecorder = () => {
// 存储录制事件
const eventRef = useRef([]);
// 存储停止录制函数
const stopFnRef = useRef();
const [isRecording, setIsRecording] = useState(false);
const startRecord = async () => {
if (isRecording) return;
setIsRecording(true);
// 启动录制
stopFnRef.current = record({
emit(event) {
// 存储数据
eventRef.current.push(event);
}
});
};
const stopRecord = () => {
if (!isRecording) return;
setIsRecording(false);
// 停止录制
if (stopFnRef.current) {
stopFnRef.current();
}
};
return {
startRecord,
stopRecord,
isRecording,
getEvents: () => eventRef.current
}
};