Форум программистов, компьютерный форум, киберфорум
React/ReactJS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.11.2024
Сообщений: 1

UseEffect запрос происходит 2 раза

26.11.2024, 13:06. Показов 741. Ответов 1

Студворк — интернет-сервис помощи студентам
Всем привет, нужна помощь! Пишу проект, делаю roadmap
useEffect вызывается 2 раза
чтобы roadmap сгенерировался и отрисовался приходится сохранять заходит в Visula Studio и сохранять проект, только после этого появляется roadmap на сайте

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import { useEffect, useRef } from 'react';
import { useParams } from 'react-router-dom';
import Header from '../compnents/Header';
import mermaid from 'mermaid';
import roadmapData from '../data/roadmapData.json';
 
export default function Roadmap() {
  const { facultyId } = useParams();
  const mermaidRef = useRef(null);
 
  const generateMermaidDiagram = (data, facultyId) => {
    const faculty = data[facultyId];
    if (!faculty) return '';
 
    let diagram = `
    flowchart TD
    %% Styles
    classDef default fill:#fff,stroke:#000,stroke-width:2px,color:#000;
    classDef section fill:#f6f7f8,stroke:#000,stroke-width:2px,color:#000;
    classDef recommended fill:#e7f3ff,stroke:#000,stroke-width:2px,color:#000;
    classDef optional fill:#fff,stroke:#666,stroke-width:2px,color:#666,stroke-dasharray: 5 5;
    `;
 
    const processNode = (node, parentId = null) => {
      const nodeId = node.id.replace(/[^a-zA-Z0-9]/g, '_');
      
      const formattedName = node.name.replace(/ /g, '<br>');
      diagram += `\n    ${nodeId}["${formattedName}"]`;
      
      if (node.type === 'section') {
        diagram += `\n    class ${nodeId} section`;
      } else if (node.optional) {
        diagram += `\n    class ${nodeId} optional`;
      } else if (node.recommended) {
        diagram += `\n    class ${nodeId} recommended`;
      }
      
      if (parentId) {
        diagram += `\n    ${parentId} --> ${nodeId}`;
      }
 
      if (node.children) {
        node.children.forEach(child => processNode(child, nodeId));
      }
    };
 
    processNode(faculty);
    return diagram;
  };
 
  useEffect(() => {
    mermaid.initialize({
      startOnLoad: true,
      theme: 'base',
      flowchart: {
        nodeSpacing: 30,
        rankSpacing: 100,
        curve: 'basis',
        useMaxWidth: false,
        htmlLabels: true,
        padding: 15,
      },
      securityLevel: 'loose',
      themeVariables: {
        fontFamily: 'system-ui, -apple-system, sans-serif',
        fontSize: '14px',
        primaryColor: '#000',
        primaryTextColor: '#000',
        primaryBorderColor: '#000',
        lineColor: '#000',
        secondaryColor: '#f6f7f8',
        tertiaryColor: '#fff',
      }
    });
 
    const renderDiagram = async () => {
      if (mermaidRef.current) {
        mermaidRef.current.innerHTML = '';
        try {
          const diagram = generateMermaidDiagram(roadmapData, facultyId);
          const { svg } = await mermaid.render('mermaid-diagram', diagram);
          mermaidRef.current.innerHTML = svg;
        } catch (error) {
          console.error('Ошибка рендеринга диаграммы:', error);
        }
      }
    };
 
    renderDiagram();
  }, [facultyId]);
  return (
    <div className="min-h-screen bg-white">
      <Header />
      <div className="max-w-[1200px] mx-auto px-4 py-8">
        <h1 className="text-3xl font-bold text-gray-900 mb-8">
          План обучения: {facultyId.toUpperCase()}
        </h1>
        <div className="bg-white rounded-lg p-6 overflow-auto">
          <div ref={mermaidRef} className="mermaid-diagram min-w-[800px]" />
        </div>
      </div>
    </div>
  );
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2024, 13:06
Ответы с готовыми решениями:

Почему 2 раза происходит отправка формы?
$(function(){ $('#my_form').on('submit', function(e){ e.preventDefault(); var $that = $(this), ...

useEffect срабатывает 2 раза после одного изменения зависимости
useEffect(() =&gt; { if (detailedDiff.current &amp;&amp; canvasRef.current) { const {width, height, top, left} =...

useEffect с пустым массивом зависимостей вызывается более одного раза
'use client' import React, {useEffect, useState} from &quot;react&quot;; import PromptCard from &quot;./PromptCard&quot;; const PromptCardList =...

1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3844 / 1703 / 431
Регистрация: 14.03.2022
Сообщений: 4,347
26.11.2024, 14:10
Цитата Сообщение от valotr0n Посмотреть сообщение
useEffect вызывается 2 раза
Посмотри чему будет равно facultyId, это же зависимость...
Проверь включен ли строгий режим...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2024, 14:10
Помогаю со студенческими работами здесь

линковка происходит с 3-4 раза В чем причина?
Доброго времени суток ! Решил продолжить в этой ветке. В прилагаемой базе реализована &quot;автолинковка&quot; и вызов окна для поиска...

Обнаружение жесткого диска происходит со второго раза
Возникла непонятная проблема с хардом - при загрузке он не обнаруживается сразу, только со второго раза. т.е. я запускаю комп и смотрю, что...

Принтер L132 сбрасывал 2 раза сброс подкладки впитывающей чернила не происходит
Доброго времени суток! Помогите решить проблему принтер чистили памперс в смысле, сбрасывали 2 раза один раз притнерхэлпом второй AdjProg!...

GET запрос выполняется 2 раза. ( Х_Х)
Приветствую, господа. Перейдем сразу к делу.. Проблема заключается в повторной отправке GET запроса, из-за чего по необъяснимым...

Запрос выполняется 2 раза, QT SQL
Пишу функцию регистрации пользователя по кнопке, БД - postgresql, при выполнении этого фрагмента в БД заносит 2 одинаковые записи,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru