Loading...
Loading...
@suneditor/suneditor-react resmi React bileşenidir. Her editör seçeneği değiştirilmeden geçer ve motor yalnızca istemci tarafında yüklenir, bu nedenle Next.js'de next/dynamic olmadan çalışır.
Bu sayfa, kurulu sürümün README dosyasının çevrilmiş halidir. Playground ve Başlangıç kılavuzu aynı sürüm için kod üretir.
Bu bileşen ayrıca SunEditor motoruna da ihtiyaç duyar (eş bağımlılık, 3.4.1 veya üzeri).
npm install suneditor @suneditor/suneditor-reactimport SunEditor from '@suneditor/suneditor-react';
import 'suneditor/css/editor';
import 'suneditor/css/contents';
export default function App() {
return (
<SunEditor
options={(se) => ({
plugins: [se.plugins.link, se.plugins.image, se.plugins.table],
buttonList: [
['undo', 'redo'],
['bold', 'italic', 'underline'],
['table', 'link', 'image'],
],
height: '400px',
})}
/>
);
}options, suneditor.create()'e olduğu gibi aktarılır; bu nedenle her seçenek, eklenti, düğme, olay ve dil, motorun kendine özgü özellikleridir.
Bu README dosyası yalnızca React bileşeninin eklediklerini kapsar; seçeneklerin kendileri için SunEditor dokümantasyon veya suneditor paketine bakın.
options, tembelce yüklenen suneditor modülünü (se.plugins, se.langs, se.interfaces, ...) alır.
Next.js'deki bu formu tercih edin: istemci bileşeninde suneditor'ı statik olarak içe aktarmak, sunucu tarafı oluşturmayı bozar çünkü motor içe aktarma sırasında window'e dokunur.
Sunucu tarafında render işlemi yapmadığınızda veya motor içe aktarımı gerektirmeyen seçenekler için de düz bir nesne kullanılabilir.
Dil paketleri düz nesnelerdir ve her zaman statik olarak içe aktarılabilirler: import ko from 'suneditor/langs/ko'.
const [html, setHtml] = useState('<p>Hello</p>');
<SunEditor value={html} onChange={setHtml} options={...} />value değerini son onChange sonucundan farklı bir değerle değiştirmek, düzenleyici içeriğini değiştirir.
Kontrolsüz bir düzenleyici için value ifadesini atlayın ve ihtiyaç duyduğunuzda içeriği örnekten okuyun.
const ref = useRef<SunEditorInstance | null>(null);
<SunEditor ref={ref} options={...} />
ref.current?.$.html.get();
ref.current?.$.html.set('<p>new</p>');
ref.current?.resetOptions({ height: '600px' });ref, suneditor.create() tarafından döndürülen nesnedir, bu nedenle motorun tüm API'si kullanılabilir durumdadır.
İşleyici fonksiyonlarını options.events üzerinden geçirin. Her render işleminde yeniden senkronize edildikleri için React durumu üzerinden güvenli bir şekilde kapatılabilirler.
<SunEditor
options={(se) => ({
plugins: [se.plugins.image],
events: {
onSave: async () => { await save(html); return true; },
onImageUploadBefore: ({ info, handler }) => { ... },
},
})}
/>DOM öğesi alan motor seçenekleri, ref'lerle çalışır çünkü options fonksiyonu mount işleminden sonra çalışır:
const toolbarRef = useRef<HTMLDivElement>(null);
<div ref={toolbarRef} />
<SunEditor options={(se) => ({ plugins: [se.plugins.link], toolbar_container: toolbarRef.current })} />Birden fazla düzenlenebilir alana sahip tek bir motor örneği (araç çubuğu, eklentiler, olaylar, tema). Her alan için <SunEditorGroup> içine bir <SunEditorRoot> yerleştirin; aralarına herhangi bir başka JSX kodu yerleştirilebilir. Grup kendi başına hiçbir öğe oluşturmaz.
const toolbarRef = useRef<HTMLDivElement>(null);
<SunEditorGroup options={(se) => ({ plugins: [se.plugins.link], toolbar_container: toolbarRef.current })}>
<div ref={toolbarRef} />
<h2>Title</h2>
<SunEditorRoot name='header' value={header} onChange={setHeader} options={{ height: '80px' }} />
<SunEditorRoot name='body' value={body} onChange={setBody} readOnly={locked} />
</SunEditorGroup>;name, rootKey (ref.current.changeFrameContext('body'), html.get({ rootKey: 'body' })) motorudur.value / onChange, readOnly, disabled ve çerçevesi options (height, placeholder, iframe, ...) vardır.toolbar_container'a ihtiyacı vardır, aksi takdirde mode, inline veya balloon olmalıdır.key değerini değiştirin.| Prop | Tip | Tanım |
|---|---|---|
value | string | HTML düzenleyici (kontrollü). |
onChange | (html: string) => void | Her içerik değişikliğinde çağrılır. options.events.onChange'ın kısaltmasıdır. |
options | SunEditorOptions | (se) => SunEditorOptions | SunEditor seçenek, değiştirilmeden aktarıldı. events ve theme canlı olarak uygulandı. Diğer her şey oluşturma sırasında bir kez uygulandı. |
readOnly | boolean | Salt okunur modu açıp kapatın. |
disabled | boolean | Editörü devre dışı bırakın. |
className, style | Ambalaja uygulandı <div>. | |
...divProps | HTMLAttributes<HTMLDivElement> | Diğer prop (id, data-*, aria-*, ...) sarmalayan <div>'e uygulanır. children göz ardı edilir. |
ref | SunEditorInstance | null | Editör örneği. |
events ve theme dışındaki seçenekler, düzenleyici oluşturulurken uygulanır.
Bunları daha sonra değiştirmek için farklı bir key ile yeniden takın veya ref.current.resetOptions()'i arayın.
import type {
SunEditorProps,
SunEditorGroupProps,
SunEditorRootProps,
SunEditorInstance,
SunEditorOptions,
SunEditorFrameOptions,
SunEditorEvents,
} from '@suneditor/suneditor-react';Tüm motor tipleri suneditor/types'dan itibaren de mevcuttur.
"use client" bulunur) ve motoru yalnızca tarayıcıda yükler, bu nedenle doğrudan bir sunucu bileşeninden işlenebilir.suneditor'ı kullanmayın. se.plugins'ye ulaşmak için options={(se) => ...} formunu kullanın.suneditor/css/editor, suneditor/css/contents, suneditor/src/themes/*.css) hem App Router hem de Pages Router'te çalışır.