Ein benutzerdefiniertes Feld-Component erstellen
In NocoBase werden Feld-Components verwendet, um in Tabellen und Formularen Daten anzuzeigen und zu bearbeiten. Dieses Beispiel zeigt, wie Sie mit ClickableFieldModel ein benutzerdefiniertes Feld-Anzeige-Component erstellen — der Feldwert wird in eckige Klammern [] eingefasst und an ein Feld-Interface vom Typ input gebunden.
Es empfiehlt sich, zunächst Folgendes zu kennen, damit die Entwicklung reibungsloser verläuft:
- Erstes Plugin schreiben — Plugin-Erstellung und Verzeichnisstruktur
- Plugin — Plugin-Einstiegspunkt und
load()-Lebenszyklus - FlowEngine-Übersicht — Grundlegende Verwendung von FlowModel
- FlowEngine → Feld-Erweiterung — Einführung in FieldModel und ClickableFieldModel
- i18n Internationalisierung — Schreibweise von Übersetzungsdateien und verzögerte Übersetzung mit
tExpr()
Endergebnis
Wir erstellen ein benutzerdefiniertes Feld-Anzeige-Component:
- erbt von
ClickableFieldModelund passt die Render-Logik an - zeigt den Feldwert mit
[]darum herum an - über
bindModelToInterfacean Felder vom Typinput(einzeiliger Text) gebunden
Nach dem Aktivieren des Plugins können Sie im Tabellenblock zu einer einzeiligen Textfeld-Spalte wechseln, auf den Konfigurations-Button der Spalte klicken und im Dropdown „Feld-Component" die Option DisplaySimpleFieldModel sehen. Nach dem Wechsel wird der Wert dieser Spalte im Format [value] angezeigt.
Vollständigen Quellcode siehe @nocobase-example/plugin-field-simple. Wenn Sie es lokal ausprobieren möchten:
Im Folgenden bauen wir dieses Plugin Schritt für Schritt von Grund auf auf.
Schritt 1: Plugin-Gerüst erstellen
Im Stammverzeichnis des Repositories ausführen:
Detaillierte Erläuterungen siehe Erstes Plugin schreiben.
Schritt 2: Feld-Modell erstellen
Erstellen Sie src/client-v2/models/DisplaySimpleFieldModel.tsx. Das ist der Kern des Plugins — hier wird festgelegt, wie das Feld gerendert wird und an welches Feld-Interface es gebunden wird.
Wichtige Punkte:
renderComponent(value)— empfängt den aktuellen Feldwert als Parameter und gibt das gerenderte JSX zurückthis.context.record— ruft den vollständigen Datensatz der aktuellen Zeile abthis.context.recordIndex— ruft den Index der aktuellen Zeile abClickableFieldModel— erbt vonFieldModelund bringt Klick-Interaktion mitdefine({ label })— legt den im Dropdown „Feld-Component" angezeigten Namen fest; ohne dies wird der Klassenname direkt angezeigtDisplayItemModel.bindModelToInterface()— bindet das Feld-Modell an einen bestimmten Feld-Interface-Typ (z. B. stehtinputfür einzeilige Textfelder), sodass dieses Anzeige-Component bei den passenden Feldern auswählbar ist
Schritt 3: Mehrsprachen-Dateien hinzufügen
Bearbeiten Sie die Übersetzungsdateien unter src/locale/ des Plugins und ergänzen Sie alle in tExpr() verwendeten Schlüssel mit Übersetzungen:
Beim erstmaligen Hinzufügen einer Sprachdatei muss die Anwendung neu gestartet werden, damit sie wirksam wird.
Mehr zur Schreibweise von Übersetzungsdateien und zur Verwendung von tExpr() siehe i18n Internationalisierung.
Schritt 4: Im Plugin registrieren
Bearbeiten Sie src/client-v2/plugin.tsx und laden Sie das Modell per Lazy Loading mit registerModelLoaders:
Schritt 5: Plugin aktivieren
Nach der Aktivierung können Sie im Tabellenblock zu einer einzeiligen Textfeld-Spalte wechseln, auf den Konfigurations-Button der Spalte klicken und im Dropdown „Feld-Component" zu diesem benutzerdefinierten Anzeige-Component wechseln.

