Zum Hauptinhalt springen

Verwendung der DHTMLX Gantt-Eigenschaften in ReactGantt

Diese Seite beschreibt die von React Gantt akzeptierten Props und wie sie DHTMLX Gantt-Funktionen zugeordnet werden.

Verfügbare Props​

EigenschaftTypBeschreibung
tasksTask[]Ein Array von Task-Objekten.
linksLink[]Ein Array von Link-Objekten.
templatesGanttTemplatesÜberschreibt gantt.templates, z. B.: task_text, task_class, scale_cell_class.
configGanttConfigIn gantt.config zusammengeführt, z. B.: scales_config, columns_config, autosize_config.
calendarsCalendar[]Ein Array von Arbeitskalendern. Beispiel: Arbeitskalender.
resourcesResource[]Ein Array von Resource-Objekten.
baselinesBaseline[]Ein Array von Baseline-Objekten.
markersMarker[]Ein Array von Marker-Objekten für Timeline-Marker.
pluginsGanttPluginsGantt-Erweiterungen, die aktiviert werden müssen (z. B.: critical_path, auto_scheduling).
data( load?: string, save?: string|RouterFunction, batchSave?: BatchChanges)Erlaubt das Laden von Daten über den integrierten Gantt-Transport und bietet Callback-Funktionen für Änderungen an den Gantt-Daten.
localestringLegt gantt.i18n.setLocale(locale) fest. Standardmäßig ist es "en".
themestringAnwendet gantt.setSkin(theme). Standardmäßig ist es "terrace".
customLightboxReactElement | nullEine React-Komponente, die das integrierte Lightbox ersetzt (siehe Custom Lightbox.)
inlineEditors( [editorType: string]: React.ComponentType )Ermöglicht die Zuordnung Ihrer React-basierten Inline-Editoren zur DHTMLX-Inline-Editor-Schnittstelle.
groupTasksGroupConfig | boolean | nullGruppierungskonfigurationsobjekt oder false/null zum Deaktivieren der Gruppierung (siehe Grouping Tasks .).
filter((task: Task) => boolean) | nullEine Funktion, die verwendet wird, um Gantt-Aufgaben zu filtern.
resourceFilter((resource: Resource) => boolean) | nullEine Funktion, die verwendet wird, um Ressourcen für das Resource Panel. zu filtern.
modalsGanttModalsErmöglicht das Ersetzen von onBeforeTaskDelete und onBeforeLinkDelete Modalen durch benutzerdefinierte Komponenten.
htmlTemplatePolicyHtmlTemplatePolicySteuert, wie Zeichenfolgen, die von Template-Funktionen zurückgegeben werden, gerendert werden. "basic-sanitize" (Standard) erlaubt, das zurückgegebene HTML zu sanitizen: sichere Formatierung, Klassen, eingeschränkte Inline-Stile, data-*-Attribute und img bleiben erhalten, während Skripte, Ereignis-Handler und gefährliche URLs entfernt werden. "escape" rendert die Zeichenfolge als Text; "unsafe-html" rendert die Rohzeichenfolge (vor V10-Verhalten); ein benutzerdefiniertes Sanitizer-Objekt (mode: "sanitize" mit einer sanitize(html)-Funktion) erlaubt es, eine Bibliothek wie DOMPurify einzubinden. Für die Ein-Zeilen-Pro Vorlage stecken Sie einzelne Template-Funktionen mit dem exportierten allowRawHTML()-Hilfsprogramm ein. See Migration notes.
(Event Props)FunktionDer Wrapper unterstützt außerdem das Übergeben von Event-Handler-Props, die DHTMLX Gantt-Ereignissen entsprechen. Zum Beispiel onTaskClick, onAfterTaskAdd usw. Wenn der Prop-Name dem Ereignisnamen entspricht, wird es automatisch angehängt.

Type Exports​

Das Paket @dhx/react-gantt re-exportsiert mehrere TypeScript-Typen, die Sie verwenden können, um Ihren Anwendungs-Code zu annotieren:

ExportBeschreibung
TaskInternes Gantt-Aufgaben-Objekt. Datumswerte sind Date-Objekte; umfasst $-präfixierte System-Eigenschaften. Verwenden Sie es in Ereignis-Handlern und beim Arbeiten mit Daten, die Gantt besitzt.
LinkInternes Gantt-Verbindungsobjekt. Verwenden Sie es in Ereignis-Handlern und beim Arbeiten mit Daten, die Gantt besitzt.
SerializedTaskVom Benutzer sichtbare Aufgaben-Struktur für Store-Zustand, anfängliche Daten und Payloads von Save-Callbacks. Datumsfelder akzeptieren `Date
SerializedLinkVom Benutzer sichtbare Verbindungs-Struktur für Store-Zustand, anfängliche Daten und Payloads von Save-Callbacks.

Wann API-Task/Link-Objekte vs SerializedTask/SerializedLink verwenden:

  • SerializedTask / SerializedLink – für Daten, die Sie besitzen: Store-Zustand, API-Antworten, anfängliche Daten-Literale. Datumsfelder akzeptieren Strings (z. B. ISO-Daten).
  • Task / Link – für Daten, die Gantt besitzt: innerhalb von Ereignis-Handlern, nachdem Gantt die Daten geparst hat. Datumsfelder sind Date-Objekte. Task enthält $-präfixierte interne Eigenschaften.

Beispielverwendung​

<ReactGantt
tasks={tasks}
links={links}
theme="material"
locale="en"
config={{
scales: [
{ unit: "year", step: 1, format: "%Y" },
{ unit: "month", step: 1, format: "%M" }
],
columns: [
{ name: "text", tree: true, width: '*' },
{ name: "start_date", align: "center" },
{ name: "duration", align: "center" },
{ name: "add" }
],
// any other gantt.config you want
}}
onTaskClick={(id, e) => {
console.log('Task clicked:', id);
return true;
}}
templates={{
task_text: (start, end, task) => `#${task.id}: ${task.text}`,
}}
/>

Verwendung von Event-Props​

Sie können jedes DHTMLX Gantt-Ereignis als Prop übergeben. Zum Beispiel:

<ReactGantt

onTaskClick={(id, e) => {
console.log('Task clicked:', id);
return true;
}}

/>

Internally, der Wrapper ruft gantt.attachEvent("onBeforeTaskAdd", handler) auf, wenn Sie ein Prop mit dem Namen onBeforeTaskAdd übergeben. Für eine vollständige Ereignisliste siehe DHTMLX Gantt API.

Kombination von Props und der DHTMLX API​

Bibliothek @dhx/react-gantt ist darauf ausgelegt, so deklarativ wie möglich für den Alltag zu sein – die meisten Anwendungsfälle lassen sich über die Standard-Props lösen (wie tasks, links, resources, templates usw.). Es kann jedoch Situationen geben, in denen Sie tieferen Zugriff auf die Gantt-Engine benötigen. Beispielsweise für:

In diesen Fällen können Sie zwei zusätzliche Ansätze verwenden, um Zugriff auf die zugrunde liegende DHTMLX Gantt-Funktionalität zu erhalten:

  • React-Hooks, die speziell vom Wrapper bereitgestellt werden, um Gantts Datenspeicher- und Planungslogik zu überbrücken

  • Direkter Zugriff auf die Gantt-Instanz über eine Ref, falls die integrierten Hooks nicht alle Bedürfnisse abdecken

Verwendung integrierter Hooks​

Die Bibliothek @dhx/react-gantt stellt Hooks für Ereignisabonnements, Ressourcenverwaltung, Zugriff auf Datenspeicher, Undo/Redo, Zoom, Selektion und Arbeitszeitsberechnungen bereit.

Siehe die专 dedicierte Seite Hooks für die vollständige Referenz, einschließlich:

Direkter Zugriff auf Gantt-Instanz mit Ref​

Während Hooks die meisten fortgeschrittenen Bedürfnisse abdecken, möchten Sie möglicherweise dennoch direkten Zugriff auf die gesamte Gantt-Instanz haben. Dafür bleibt der Ref-Ansatz verfügbar:

import { useRef, useEffect } from 'react';
import ReactGantt, { ReactGanttRef } from '@dhx/react-gantt';

export function DirectRefExample({ tasks, links }) {
const ganttRef = useRef<ReactGanttRef>(null);

useEffect(() => {
const gantt = ganttRef.current?.instance;
if (!gantt) return;
gantt.showDate(new Date());
}, []);

return <ReactGantt ref={ganttRef} tasks={tasks} links={links} />;
}
Hinweis

Wenn Sie Aufgaben oder Links über die direkte Gantt-Instanz ändern und sie gleichzeitig als React-Props liefern, halten Sie sie synchron. Andernfalls könnte das nächste React-Re-Render Ihre manuellen Änderungen überschreiben.

Siehe Accessing the Underlying Gantt API für weitere Details.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.