From f9e5d3614a330afd2bc42523512d0b307a25a450 Mon Sep 17 00:00:00 2001 From: Tatyana Date: Thu, 4 Sep 2025 22:13:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BD=D0=B0=D0=B4=D0=BE=20=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D1=83=20=D1=81=20=D1=80=D0=BE=D1=83=D1=82=D0=B8=D0=BD=D0=B3?= =?UTF-8?q?=D0=BE=D0=BC=20=D0=BF=D0=BE=20=D1=83=D0=BF=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=D0=BC=20=D0=BA=D1=83=D1=80=D1=81?= =?UTF-8?q?=D0=B0=20/=20=D1=83=20=D0=BD=D0=B0=D1=81=20=D0=B4=D0=BE=D0=BB?= =?UTF-8?q?=D0=B6=D0=BD=D1=8B=20=D1=83=D1=87=D0=B8=D1=82=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=D1=81=D1=8F=20=D0=B4=D0=BD=D0=B8,=20=D1=82.=D0=BA.?= =?UTF-8?q?=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=20=D1=83=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9=20=D1=84=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D1=82=D1=80=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=BD=D1=8F=D0=BC=20=D0=B8=20=D0=BC=D0=B0=D1=80=D1=88?= =?UTF-8?q?=D1=80=D1=83=D1=82=D1=8B=20=D0=BD=D0=B5=D0=B2=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B0=D1=8E=D1=82?= =?UTF-8?q?=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/CourseExercises.tsx | 55 +++++++++++++++-------------------- src/pages/Exercise.tsx | 31 ++------------------ src/shared/consts/router.ts | 4 +-- 3 files changed, 27 insertions(+), 63 deletions(-) diff --git a/src/pages/CourseExercises.tsx b/src/pages/CourseExercises.tsx index 00cd46f..e02d630 100644 --- a/src/pages/CourseExercises.tsx +++ b/src/pages/CourseExercises.tsx @@ -15,6 +15,7 @@ import type { Course } from "../pages/Courses"; // import { Exercise } from "./Exercise"; export interface CourseExercises { + id: number; id_course: number; id_exercise: number; exercise: Exercise; @@ -37,11 +38,13 @@ export const CourseExercises = () => { const location = useLocation<{ course?: Course }>(); const course = location.state?.course; - + const [course_exercises, setExercises] = useState([]); const [selectedDay, setSelectedDay] = useState(null); + + const token = localStorage.getItem('authToken'); useEffect(() => { @@ -60,13 +63,10 @@ export const CourseExercises = () => { }) .then(response => { - console.log('Response status:', response.status); - console.log('Данные страницы упражнения курса:', response.data); - // setPacientData(response.data); + console.log('Данные упражнения курса:', response.data.course_exercises); + setExercises(response.data.course_exercises); - - }) .catch(error => { if (error.response) { @@ -88,27 +88,6 @@ export const CourseExercises = () => { } }, [course_exercises]); - //Этот код — это React-хук useEffect, который выполняет определённый блок кода при изменении зависимостей. Давайте разберём его подробно: - //Он следит за изменением массива course_exercises. Когда course_exercises обновляется (например, загружается с сервера или изменяется), он проверяет: - - // Есть ли в массиве упражнения (course_exercises.length > 0) - // И выбран ли уже день (selectedDay === null) - // Если оба условия выполняются, то: - - // Устанавливает selectedDay в значение day первого элемента массива course_exercises[0]. - // Почему это нужно? - // Это логика инициализации: - - // Когда данные о упражнениях загружены впервые, и пользователь ещё не выбрал день (selectedDay равен null), - // автоматически выбирается первый день из загруженных упражнений. - // Почему [course_exercises] в конце? - // Это массив зависимостей. Он говорит React: - - // Запускать этот эффект только тогда, когда course_exercises изменится. - - // Без этого эффекта он бы запускался при каждом рендере, что нежелательно. - - const uniqueDays = Array.from(new Set(course_exercises.map(ex => ex.day))).sort((a, b) => a - b); const dayMap: { [key: number]: number } = {}; @@ -125,13 +104,12 @@ export const CourseExercises = () => { ? course_exercises.filter(ex => ex.day === selectedDay) : course_exercises; - +console.log('отфильтрованный список по дням',filteredExercises) return (
- {/* Это выражение использует оператор опциональной цепочки (?.) и оператор нулевого слияния (??). -Если course не null и не undefined, то взять его свойство title, иначе — вернуть undefined*/} +
{/* Заголовок секции */}
@@ -147,10 +125,13 @@ export const CourseExercises = () => {
{days.map((day, index) => ( + +