当前位置:首页 > React

react如何使用ueditor

2026-02-11 19:23:51React

使用 UEditor 在 React 项目中

在 React 项目中集成 UEditor(百度富文本编辑器)需要解决几个关键问题:UEditor 是基于传统 DOM 操作的库,而 React 是声明式框架,需要通过手动挂载 DOM 并管理生命周期。

安装 UEditor

下载 UEditor 官方资源包(通常为 ZIP 文件),解压后放置到项目的 public 目录下。例如:

react如何使用ueditor

public/
  └── ueditor/
      ├── dialogs/
      ├── lang/
      ├── themes/
      └── ueditor.all.js

创建 React 组件封装

新建一个 React 组件(如 UEditor.jsx),动态加载 UEditor 资源并初始化:

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

const UEditor = ({ config, onChange }) => {
  const editorRef = useRef(null);
  const scriptRef = useRef(null);

  useEffect(() => {
    // 动态加载 UEditor 主脚本
    scriptRef.current = document.createElement('script');
    scriptRef.current.src = '/ueditor/ueditor.all.js';
    scriptRef.current.onload = () => {
      window.UEDITOR_CONFIG = config || {
        serverUrl: '', // 后端接口地址(如需要上传功能)
        initialFrameHeight: 300,
      };
      editorRef.current = window.UE.getEditor('editorContainer');
      editorRef.current.addListener('contentChange', () => {
        onChange?.(editorRef.current.getContent());
      });
    };
    document.body.appendChild(scriptRef.current);

    return () => {
      // 清理资源
      if (editorRef.current) {
        editorRef.current.destroy();
      }
      if (scriptRef.current) {
        document.body.removeChild(scriptRef.current);
      }
    };
  }, []);

  return <div id="editorContainer" />;
};

export default UEditor;

使用组件

在父组件中调用封装好的 UEditor

react如何使用ueditor

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

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

  return (
    <div>
      <UEditor
        onChange={setContent}
        config={{ serverUrl: '/api/upload' }}
      />
      <div>实时内容:{content}</div>
    </div>
  );
};

配置后端接口(可选)

如果需要图片上传功能,需配置 serverUrl 指向后端接口。例如 Node.js 的 Express 服务:

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

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

样式调整

index.html 中引入 UEditor 的 CSS:

<link rel="stylesheet" href="/ueditor/themes/default/css/ueditor.css" />

注意事项

  • 多实例问题:避免在同一页面多次初始化 UEditor,可能导致冲突。
  • SSR 兼容:服务端渲染时需通过动态导入(next/dynamic 或条件渲染)避免报错。
  • 版本差异:UEditor 不同版本配置参数可能不同,需查阅对应版本文档。

通过这种方式,可以在 React 应用中实现完整的富文本编辑功能,同时保持 React 的数据流管理。

分享给朋友:

相关文章

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

react如何安装

react如何安装

安装React的步骤 确保已安装Node.js(建议版本12或更高),可通过以下命令检查版本: node -v npm -v 使用Create React App快速搭建项目(推荐): npx c…

webstorm如何运行react

webstorm如何运行react

运行 React 项目的方法 在 WebStorm 中运行 React 项目需要确保项目已正确配置,并且依赖项已安装。以下是具体操作步骤: 确保项目依赖已安装 打开终端(Terminal),导航到项…

react如何引入jq

react如何引入jq

在React中引入jQuery的方法 React和jQuery可以共存,但需要注意避免直接操作DOM,因为React有自己的虚拟DOM机制。以下是几种引入jQuery的方式: 通过npm安装jQue…

react 如何设置 代理

react 如何设置 代理

在 React 中设置代理 在开发过程中,为了跨域请求后端 API,可以通过配置代理来解决。以下是几种常见的设置代理的方法: 使用 package.json 配置代理 在 package.json…