From 9af2258517e574d6005186da7bb4e1febeb47615 Mon Sep 17 00:00:00 2001 From: Tatyana Date: Fri, 29 Aug 2025 14:28:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B0=D0=B4=D0=B0=D0=BF=D1=82=D0=B8=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8=20=D1=82=D0=B5=D0=B3=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=81=20=D0=B4=D0=BD=D1=8F=D0=BC=D0=B8=20=D0=BD=D0=B0=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B5=20=D0=BA=D1=83=D1=80?= =?UTF-8?q?=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/CourseExercises.tsx | 48 ++++++++++++++++------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/src/pages/CourseExercises.tsx b/src/pages/CourseExercises.tsx index a050671..aa0cae2 100644 --- a/src/pages/CourseExercises.tsx +++ b/src/pages/CourseExercises.tsx @@ -1,6 +1,5 @@ "use client" -import React from 'react'; import { useState, useEffect } from "react"; import { useParams, useHistory, useLocation } from "react-router-dom"; @@ -37,20 +36,14 @@ export const CourseExercises = () => { const history = useHistory(); const { id } = useParams<{ id: string }>(); - const location = useLocation<{ course?: Course }>(); const course = location.state?.course; - - // const [pacientData, setPacientData] = useState(null); - const [course_exercises, setExercises] = useState([]); const [selectedDay, setSelectedDay] = useState(null); const token = localStorage.getItem('authToken'); - - useEffect(() => { console.log(token) if (!token) { @@ -95,6 +88,25 @@ 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); @@ -115,9 +127,6 @@ export const CourseExercises = () => { - //тут выводим дни из БД - - return (
@@ -125,11 +134,10 @@ export const CourseExercises = () => { Если course не null и не undefined, то взять его свойство title, иначе — вернуть undefined*/}
{/* Заголовок секции */} -
+

Упражнения

Количество упражнений: {course_exercises.length}
- {/*

{JSON.stringify(course_exercises)}

*/} @@ -137,14 +145,14 @@ export const CourseExercises = () => { {/* Кнопки выбора дня */} {days.length > 1 && (
-
+
{days.map((day, index) => (
- - {/*
- - {pacientData ? ( -
{JSON.stringify(pacientData, null, 2)}
- ) : ( -

Нет данных

- )} -
*/} - - -