navigate(`/study/${groupId}`);
}
if (type === 'test' && item.test && item.test.includes('请开始测试')) {
- navigate(`/test/${groupId}`);
+ navigate(`/test/${groupId}?type=test`);
}
if (type === 'review1' && item.review1 && (item.review1.includes('请开始复习') || item.review1.includes('请尽快复习'))) {
- navigate(`/test/${groupId}`);
+ navigate(`/test/${groupId}?type=review1`);
}
if (type === 'review2' && item.review2 && (item.review2.includes('请开始复习') || item.review2.includes('请尽快复习'))) {
- navigate(`/test/${groupId}`);
+ navigate(`/test/${groupId}?type=review2`);
}
if (type === 'review3' && item.review3 && (item.review3.includes('请开始复习') || item.review3.includes('请尽快复习'))) {
- navigate(`/test/${groupId}`);
+ navigate(`/test/${groupId}?type=review3`);
}
};
import React, { useState, useEffect, useCallback, useRef } from 'react';
-import { useParams, useNavigate } from 'react-router-dom';
+import { useParams, useNavigate, useSearchParams } from 'react-router-dom';
import axios from 'axios';
import './TestMode.css';
function TestMode() {
const { groupId } = useParams();
const navigate = useNavigate();
+ const [searchParams] = useSearchParams();
+ // 活动类型:test / review1 / review2 / review3(首页点击复习时通过 ?type= 传入;缺省为 test)
+ const activityType = searchParams.get('type') || 'test';
const [words, setWords] = useState([]);
const [queue, setQueue] = useState([]); // 当前测试队列
const [wrongQueue, setWrongQueue] = useState([]); // 错词重考队列
setIsRetesting(true);
}, [wrongQueue]);
- // 完成测试,记录进度
+ // 完成测试,记录进度(op_type 依据活动类型:test / review1 / review2 / review3)
const finishTest = useCallback(async () => {
await axios.post(`${API_BASE}/api/progress/update`, {
group_id: groupId,
- op_type: 'test'
+ op_type: activityType
});
navigate('/');
- }, [groupId, navigate]);
+ }, [groupId, navigate, activityType]);
// 键盘事件
const handleKeyDown = useCallback((e) => {