Membuat Component Field Kustom
Di NocoBase, Component Field digunakan untuk menampilkan dan mengedit data di tabel dan form. Contoh ini menunjukkan cara membuat Component tampilan Field kustom dengan ClickableFieldModel — menambahkan tanda kurung siku [] di kedua sisi nilai Field, dan mengikatnya ke interface Field tipe input.
Disarankan memahami konten berikut terlebih dahulu agar pengembangan lebih lancar:
- Menulis Plugin Pertama Anda — Pembuatan plugin dan struktur direktori
- Plugin — Entry point Plugin dan lifecycle
load() - Ikhtisar FlowEngine — Penggunaan dasar FlowModel
- FlowEngine → Ekstensi Field — Pengantar kelas dasar FieldModel, ClickableFieldModel
- i18n Internasionalisasi — Cara menulis file terjemahan dan penggunaan terjemahan tertunda
tExpr()
Hasil Akhir
Yang akan kita buat adalah Component tampilan Field kustom:
- Mewarisi
ClickableFieldModel, dengan logika rendering kustom - Menampilkan nilai Field dengan tanda kurung siku
[]di kedua sisinya - Mengikat ke Field tipe
input(single-line text) melaluibindModelToInterface
Setelah plugin diaktifkan, di Block tabel temukan kolom Field single-line text, klik tombol konfigurasi kolom, di dropdown menu "Component Field" Anda akan melihat opsi DisplaySimpleFieldModel. Setelah berpindah, nilai kolom tersebut akan ditampilkan dalam format [value].
Source code lengkap lihat @nocobase-example/plugin-field-simple. Jika Anda ingin langsung menjalankannya secara lokal untuk melihat hasilnya:
Berikutnya, mari kita bangun plugin ini dari nol, langkah demi langkah.
Langkah 1: Membuat Skeleton Plugin
Eksekusi di direktori root repository:
Untuk penjelasan detail lihat Menulis Plugin Pertama Anda.
Langkah 2: Membuat Model Field
Buat src/client-v2/models/DisplaySimpleFieldModel.tsx. Ini adalah inti dari plugin — mendefinisikan bagaimana Field dirender dan ke interface Field mana ia diikat.
Beberapa poin penting:
renderComponent(value)— Menerima nilai Field saat ini sebagai parameter, mengembalikan JSX yang akan direnderthis.context.record— Mendapatkan record data lengkap baris saat inithis.context.recordIndex— Mendapatkan index baris saat iniClickableFieldModel— Mewarisi dariFieldModel, memiliki kapabilitas interaksi klikdefine({ label })— Mengatur nama tampilan di dropdown menu "Component Field", jika tidak ditambahkan akan langsung menampilkan nama kelasDisplayItemModel.bindModelToInterface()— Mengikat model Field ke tipe interface Field yang ditentukan (misalnyainputmewakili Field single-line text), sehingga di Field tipe yang sesuai dapat memilih Component tampilan ini
Langkah 3: Menambahkan File Multibahasa
Edit file terjemahan di src/locale/ plugin, tambahkan terjemahan untuk key yang digunakan tExpr():
Pertama kali menambahkan file bahasa perlu restart aplikasi agar berlaku.
Untuk cara penulisan file terjemahan dan penggunaan tExpr() lebih lanjut, lihat i18n Internasionalisasi.
Langkah 4: Mendaftarkan di Plugin
Edit src/client-v2/plugin.tsx, lazy loading model dengan registerModelLoaders:
Langkah 5: Mengaktifkan Plugin
Setelah diaktifkan, di Block tabel temukan kolom Field single-line text, klik tombol konfigurasi kolom, di dropdown menu "Component Field" Anda dapat berpindah ke Component tampilan kustom ini.
Source Code Lengkap
- @nocobase-example/plugin-field-simple — Contoh lengkap Component Field kustom
Ringkasan
Kapabilitas yang digunakan dalam contoh ini:
Tautan Terkait
- Menulis Plugin Pertama Anda — Membuat skeleton plugin dari nol
- Ikhtisar FlowEngine — Penggunaan dasar FlowModel
- FlowEngine → Ekstensi Field — FieldModel, ClickableFieldModel, bindModelToInterface
- FlowEngine → Ekstensi Block — Block Kustom
- Component vs FlowModel — Kapan menggunakan FlowModel
- Plugin — Entry point Plugin dan lifecycle load()
- i18n Internasionalisasi — Cara menulis file terjemahan dan penggunaan tExpr
- Dokumentasi FlowEngine Lengkap — Referensi lengkap FlowModel, Flow, Context

