Loading...
Loading...
@suneditor/suneditor-react គឺជាសមាសភាគ React ផ្លូវការ។ ជម្រើសកម្មវិធីនិពន្ធនីមួយៗឆ្លងកាត់ដោយមិនមានការផ្លាស់ប្តូរ ហើយម៉ាស៊ីននឹងផ្ទុកតែលើម៉ាស៊ីនភ្ញៀវប៉ុណ្ណោះ ដូច្នេះវាដំណើរការនៅក្នុង Next.js ដោយមិនចាំបាច់ប្រើ next/dynamic។
ទំព័រនេះគឺជាកញ្ចប់ README នៃកំណែដែលបានដំឡើង ដែលបានបកប្រែ។ Playground និង Getting Started បញ្ចេញកូដសម្រាប់កំណែដូចគ្នា។
សមាសភាគនេះក៏ត្រូវការម៉ាស៊ីន SunEditor ផងដែរ (ការពឹងផ្អែកពីមិត្តភក្ដិ កំណែ 3.4.1 ឬថ្មីជាងនេះ)
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() ដូចដែលវាមាន ដូច្នេះជម្រើស កម្មវិធីជំនួយ ប៊ូតុង ព្រឹត្តិការណ៍ និងភាសានីមួយៗគឺជារបស់ម៉ាស៊ីនផ្ទាល់។
README នេះគ្របដណ្តប់តែអ្វីដែលសមាសភាគ React បន្ថែមប៉ុណ្ណោះ។ សម្រាប់ជម្រើសខ្លួនឯង សូមមើលកញ្ចប់ SunEditor documentation ឬ suneditor។
options ទទួលម៉ូឌុល suneditor ដែលផ្ទុកយ៉ាងខ្ជិល (se.plugins, se.langs, se.interfaces, ...)។
ចូលចិត្តទម្រង់នេះនៅក្នុង Next.js៖ ការនាំចូល suneditor ដោយឋិតិវន្តនៅក្នុងសមាសភាគអតិថិជនធ្វើឱ្យខូចការបង្ហាញម៉ាស៊ីនមេ ពីព្រោះម៉ាស៊ីនប៉ះ window នៅពេលនាំចូល។
វត្ថុធម្មតាក៏ដំណើរការផងដែរ នៅពេលដែលអ្នកមិនកំពុងបង្ហាញម៉ាស៊ីនមេ ឬសម្រាប់ជម្រើសដែលមិនត្រូវការការនាំចូលម៉ាស៊ីន។
កញ្ចប់ភាសាគឺជាវត្ថុធម្មតា ហើយអាចត្រូវបាននាំចូលជាឋិតិវន្តជានិច្ច៖ import ko from 'suneditor/langs/ko'។
const [html, setHtml] = useState('<p>Hello</p>');
<SunEditor value={html} onChange={setHtml} options={...} />ការផ្លាស់ប្ដូរ value ទៅជាអ្វីផ្សេងក្រៅពីលទ្ធផល onChange ចុងក្រោយ នឹងជំនួសខ្លឹមសាររបស់កម្មវិធីនិពន្ធ។
លុប value សម្រាប់កម្មវិធីនិពន្ធដែលមិនបានគ្រប់គ្រង ហើយអានខ្លឹមសារពីឧទាហរណ៍នៅពេលដែលអ្នកត្រូវការវា។
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() ដូច្នេះ API ម៉ាស៊ីនទាំងមូលអាចប្រើបាន។
បញ្ជូនឧបករណ៍ដោះស្រាយឆ្លងកាត់ options.events។ ពួកវាត្រូវបានធ្វើសមកាលកម្មឡើងវិញនៅលើការបង្ហាញនីមួយៗ ដូច្នេះពួកវាអាចបិទដោយសុវត្ថិភាពលើស្ថានភាព React។
<SunEditor
options={(se) => ({
plugins: [se.plugins.image],
events: {
onSave: async () => { await save(html); return true; },
onImageUploadBefore: ({ info, handler }) => { ... },
},
})}
/>ជម្រើសម៉ាស៊ីនដែលយកធាតុ DOM ដំណើរការជាមួយ refs ពីព្រោះអនុគមន៍ options ដំណើរការបន្ទាប់ពី mount៖
const toolbarRef = useRef<HTMLDivElement>(null);
<div ref={toolbarRef} />
<SunEditor options={(se) => ({ plugins: [se.plugins.link], toolbar_container: toolbarRef.current })} />ឧទាហរណ៍របស់ម៉ាស៊ីនមួយ (របារឧបករណ៍ កម្មវិធីជំនួយ ព្រឹត្តិការណ៍ ស្បែក) ដែលមានតំបន់ដែលអាចកែសម្រួលបានច្រើន។ ដាក់ <SunEditorRoot> ក្នុងមួយតំបន់នៅខាងក្នុង <SunEditorGroup>; JSX ផ្សេងទៀតអាចដាក់នៅចន្លោះពួកវាបាន។ ក្រុមនេះមិនបង្ហាញធាតុផ្ទាល់ខ្លួនរបស់វាទេ។
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' }))។value / onChange, readOnly, disabled និងស៊ុម options (height, placeholder, iframe, ...) រៀងៗខ្លួន។toolbar_container សម្រាប់របារឧបករណ៍ដែលបានចែករំលែក លុះត្រាតែ mode គឺ inline ឬ balloon។key របស់ក្រុម ដើម្បីបង្កើតវាឡើងវិញជាមួយឫសផ្សេងគ្នា។| Prop | ប្រភេទ | ការពិពណ៌នា |
|---|---|---|
value | string | កម្មវិធីនិពន្ធ HTML (គ្រប់គ្រង)។ |
onChange | (html: string) => void | បានអំពាវនាវឱ្យមានការផ្លាស់ប្តូរខ្លឹមសារនីមួយៗ។ អក្សរកាត់សម្រាប់ options.events.onChange។ |
options | SunEditorOptions | (se) => SunEditorOptions | ជម្រើស SunEditor បានឆ្លងកាត់ដោយមិនមានការផ្លាស់ប្តូរ។ events និង theme ត្រូវបានអនុវត្តផ្ទាល់។ អ្វីៗផ្សេងទៀតទាំងអស់ត្រូវបានអនុវត្តតែម្តងនៅពេលបង្កើត។ |
readOnly | boolean | បិទ/បើករបៀបអានតែប៉ុណ្ណោះ។ |
disabled | boolean | បិទកម្មវិធីនិពន្ធ។ |
className, style | បានអនុវត្តទៅលើការរុំ <div>។ | |
...divProps | HTMLAttributes<HTMLDivElement> | prop (id, data-*, aria-*, ...) ផ្សេងទៀតត្រូវបានអនុវត្តទៅការរុំ <div>។ children ត្រូវបានមិនអើពើ។ |
ref | SunEditorInstance | null | ឧទាហរណ៍របស់អ្នកកែសម្រួល។ |
ជម្រើសផ្សេងក្រៅពី events និង theme នឹងត្រូវបានអនុវត្តនៅពេលដែលកម្មវិធីនិពន្ធត្រូវបានបង្កើត។
ដើម្បីផ្លាស់ប្តូរពួកវានៅពេលក្រោយ សូមដំឡើងឡើងវិញជាមួយ key ផ្សេង ឬទូរស័ព្ទទៅ ref.current.resetOptions()។
import type {
SunEditorProps,
SunEditorGroupProps,
SunEditorRootProps,
SunEditorInstance,
SunEditorOptions,
SunEditorFrameOptions,
SunEditorEvents,
} from '@suneditor/suneditor-react';ម៉ាស៊ីនគ្រប់ប្រភេទក៏មានចាប់ពី suneditor/types ផងដែរ។
"use client" គឺស្ថិតនៅក្នុងលទ្ធផលសាងសង់) ហើយផ្ទុកម៉ាស៊ីនតែនៅក្នុងកម្មវិធីរុករកប៉ុណ្ណោះ ដូច្នេះវាអាចត្រូវបានបង្ហាញពីសមាសភាគម៉ាស៊ីនមេដោយផ្ទាល់។suneditor ឲ្យឆ្ងាយពីការនាំចូលឋិតិវន្តនៅក្នុងសមាសធាតុអតិថិជន។ ប្រើទម្រង់ options={(se) => ...} ដើម្បីទៅដល់ se.plugins។suneditor/css/editor, suneditor/css/contents, suneditor/src/themes/*.css) ដំណើរការទាំងនៅក្នុង App Router និង Pages Router។