当前位置:首页 > React

ueditor如何嵌到react里

2026-01-25 13:16:24React

安装 UEditor 依赖

在项目中安装 UEditor 的官方版本或社区维护的 React 封装库(如 react-ueditor)。通过 npm 或 yarn 安装:

npm install ueditor --save
# 或使用社区封装库
npm install react-ueditor --save

引入 UEditor 资源文件

将 UEditor 的静态资源(如 ueditor.config.jsueditor.all.min.js)复制到项目的 public 目录下,或通过 CDN 引入。在 public/index.html 中添加:

<script src="/ueditor/ueditor.config.js"></script>
<script src="/ueditor/ueditor.all.min.js"></script>

创建 React 组件封装

新建一个 React 组件(如 UEditorComponent.js),初始化 UEditor 实例并处理生命周期:

import React, { useEffect, useRef } from 'react';

const UEditorComponent = ({ id, config, onChange }) => {
  const editorRef = useRef(null);

  useEffect(() => {
    // 动态加载 UEditor 脚本
    const script = document.createElement('script');
    script.src = '/ueditor/ueditor.all.min.js';
    script.onload = () => {
      editorRef.current = window.UE.getEditor(id, config);
      editorRef.current.addListener('contentChange', () => {
        onChange && onChange(editorRef.current.getContent());
      });
    };
    document.body.appendChild(script);

    return () => {
      if (editorRef.current) {
        editorRef.current.destroy();
      }
      document.body.removeChild(script);
    };
  }, [id, config, onChange]);

  return <div id={id} style={{ width: '100%', minHeight: '300px' }} />;
};

export default UEditorComponent;

使用组件并配置

在父组件中调用 UEditorComponent,传递配置参数和回调函数:

import React, { useState } from 'react';
import UEditorComponent from './UEditorComponent';

const App = () => {
  const [content, setContent] = useState('');

  const config = {
    autoHeightEnabled: false,
    initialFrameHeight: 500,
    serverUrl: '/api/ueditor/upload', // 后端上传接口
  };

  return (
    <div>
      <UEditorComponent id="editor" config={config} onChange={setContent} />
      <div>当前内容:{content}</div>
    </div>
  );
};

export default App;

处理上传接口

配置后端接口处理文件上传(如 Node.js 示例):

ueditor如何嵌到react里

const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });

app.post('/api/ueditor/upload', upload.single('upfile'), (req, res) => {
  res.json({
    state: 'SUCCESS',
    url: `/uploads/${req.file.filename}`,
    title: req.file.originalname,
    original: req.file.originalname,
  });
});

app.listen(3001);

注意事项

  • 路径问题:确保 UEditor 资源路径正确,避免 404 错误。
  • 销毁实例:组件卸载时调用 destroy() 方法防止内存泄漏。
  • 样式隔离:UEditor 生成的 DOM 可能受全局 CSS 影响,可通过 Shadow DOM 或 iframe 解决。
  • 兼容性:社区封装库(如 react-ueditor)可能简化流程,但需注意版本兼容性。

标签: ueditorreact
分享给朋友:

相关文章

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react 如何精通

react 如何精通

掌握核心概念 深入理解React的基础概念,包括组件(函数组件与类组件)、状态(useState)、生命周期(useEffect)、Props传递、虚拟DOM与Diff算法。通过官方文档或《React…

react如何检测窗口

react如何检测窗口

监听窗口大小变化 使用useEffect钩子和resize事件监听窗口尺寸变化。在组件挂载时添加事件监听器,卸载时移除监听器以避免内存泄漏。 import { useState, useEffect…

react如何引用jquery

react如何引用jquery

在React项目中引用jQuery可以通过以下方法实现: 安装jQuery依赖 通过npm或yarn安装jQuery包: npm install jquery # 或 yarn add jquer…