本指南展示了如何使用 TinyMCE React 组件 将 TinyMCE 打包到 React 应用程序中。
前提条件
此过程需要 Node.js(和 NPM)。
操作步骤
使用 Vite 和 React SWC 创建一个名为
tinymce-react-demo的新 React 项目。# NPM 7+, extra double-dash is needed npm create vite@5 tinymce-react-demo -- --template react-swc
进入项目目录并安装
@tinymce/tinymce-reactcd tinymce-react-demo && npm install @tinymce/tinymce-react
安装
tinymce包。npm install tinymce
添加
BundledEditor.jsx并按如下方式导入Editor和tinymce组件。import { Editor } from '@tinymce/tinymce-react'; // Ensure to import tinymce first as other components expect // a global variable `tinymce` to exist import 'tinymce/tinymce'; // DOM model import 'tinymce/models/dom/model' // Theme import 'tinymce/themes/silver'; // Toolbar icons import 'tinymce/icons/default'; // Editor styles import 'tinymce/skins/ui/oxide/skin'; // Content styles, including inline UI like fake cursors import 'tinymce/skins/content/default/content'; import 'tinymce/skins/ui/oxide/content'; // Import plugins import 'tinymce/plugins/anchor'; import 'tinymce/plugins/advlist'; import 'tinymce/plugins/autolink'; import 'tinymce/plugins/charmap'; import 'tinymce/plugins/code'; import 'tinymce/plugins/media'; import 'tinymce/plugins/visualblocks'; import 'tinymce/plugins/fullscreen'; import 'tinymce/plugins/insertdatetime'; import 'tinymce/plugins/preview'; import 'tinymce/plugins/help'; // Include resources that a plugin lazy-loads at the run-time import 'tinymce/plugins/help/js/i18n/keynav/en'; import 'tinymce/plugins/image'; import 'tinymce/plugins/link'; import 'tinymce/plugins/lists'; import 'tinymce/plugins/searchreplace'; import 'tinymce/plugins/table'; import 'tinymce/plugins/wordcount'; export default function BundledEditor(props) { return ( <Editor licenseKey='gpl' {...props} /> ); }将带有配置的
BundledEditor组件添加到App.jsx中。import { useRef } from 'react'; import BundledEditor from './BundledEditor' import './App.css'; export default function App() { const editorRef = useRef(null); const log = () => { if (editorRef.current) { console.log(editorRef.current.getContent()); } }; return ( <> <BundledEditor onInit={(_evt, editor) => editorRef.current = editor} initialValue='<p>This is the initial content of the editor.</p>' init={{ height: 500, menubar: false, plugins: [ 'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'preview', 'help', 'wordcount' ], toolbar: 'undo redo | blocks | ' + 'bold italic forecolor | alignleft aligncenter ' + 'alignright alignjustify | bullist numlist outdent indent | ' + 'removeformat | help', content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }' }} /> <button onClick={log}>Log editor content</button> </> ); }运行开发服务器以测试应用程序:
npm run dev
其他资源
有关打包的信息,请参阅:打包 TinyMCE 简介
有关 TinyMCE React 集成的示例,请参阅:tinymce-react storybook。
有关集成 TinyMCE 高级插件的指南,请参阅:使用高级插件。
有关自定义的信息:
TinyMCE 集成,请参阅:TinyMCE React 集成技术参考。
TinyMCE,请参阅:基础设置。
React 应用程序,请参阅:使用 Vite 入门 或 React 文档。