TIP
Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris
Menulis Plugin Blok Pertama Anda
Sebelum memulai, disarankan untuk membaca "Menulis Plugin Pertama Anda" untuk memahami cara cepat membuat plugin dasar. Selanjutnya, kita akan mengembangkan fungsionalitas blok sederhana berdasarkan itu.
Langkah 1: Membuat Berkas Model Blok
Buat berkas baru di direktori plugin: client/models/SimpleBlockModel.tsx
Definisikan dan implementasikan model blok dasar dalam berkas, termasuk logika rendering-nya:
import { BlockModel } from '@nocobase/client';
import React from 'react';
import { tExpr } from '../utils';
export class SimpleBlockModel extends BlockModel {
renderComponent() {
return (
<div>
<h1>Hello, NocoBase!</h1>
<p>This is a simple block rendered by SimpleBlockModel.</p>
</div>
);
}
}
SimpleBlockModel.define({
label: tExpr('Hello block'),
});
Langkah 3: Mendaftarkan Model Blok
Ekspor model yang baru dibuat di berkas client/models/index.ts:
import { ModelConstructor } from '@nocobase/flow-engine';
import { SimpleBlockModel } from './SimpleBlockModel';
export default {
SimpleBlockModel,
} as Record<string, ModelConstructor>;
Langkah 4: Mengaktifkan dan Mencoba Blok
Setelah mengaktifkan plugin, Anda akan melihat opsi Hello block yang baru ditambahkan di menu dropdown "Tambah Blok".
Demonstrasi efek:

Langkah 5: Menambahkan Kemampuan Konfigurasi ke Blok
Selanjutnya, kita akan menambahkan fungsionalitas yang dapat dikonfigurasi ke blok melalui Alur (Flow), memungkinkan pengguna untuk mengedit konten blok di antarmuka.
Lanjutkan mengedit berkas SimpleBlockModel.tsx:
import { BlockModel } from '@nocobase/client';
import React from 'react';
import { tExpr } from '../locale';
export class SimpleBlockModel extends BlockModel {
renderComponent() {
return <div dangerouslySetInnerHTML={{ __html: this.props.html }} />;
}
}
SimpleBlockModel.define({
label: tExpr('Simple block'),
});
SimpleBlockModel.registerFlow({
key: 'flow1',
title: tExpr('Simple Block Flow'),
on: 'beforeRender',
steps: {
editHtml: {
title: tExpr('Edit HTML Content'),
uiSchema: {
html: {
type: 'string',
title: tExpr('HTML Content'),
'x-decorator': 'FormItem',
'x-component': 'Input.TextArea',
},
},
defaultParams: {
html: `<h3>This is a simple block</h3>
<p>You can edit the HTML content.</p>`,
},
handler(ctx, params) {
ctx.model.props.html = params.html;
},
},
},
});
Demonstrasi efek:

Ringkasan
Artikel ini menjelaskan cara membuat plugin blok sederhana, meliputi:
- Cara mendefinisikan dan mengimplementasikan model blok
- Cara mendaftarkan model blok
- Cara menambahkan fungsionalitas yang dapat dikonfigurasi ke blok melalui Alur (Flow)
Referensi kode sumber lengkap: Contoh Blok Sederhana