当前位置:首页 > 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 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react 如何启动

react 如何启动

创建 React 项目 使用官方工具 create-react-app 快速初始化项目,需提前安装 Node.js(版本 ≥ 14.0.0)和 npm/yarn: npx create-react-…

react 如何跳转

react 如何跳转

使用 React Router 进行页面跳转 React 应用中通常使用 react-router-dom 库实现页面跳转。以下是几种常见的跳转方式: 安装依赖 npm install react…