You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React记事本中使用React-Quill展示带HTML格式的笔记?

嘿,这个问题我熟!你已经搞定了存储带HTML样式的笔记,现在要展示其实很简单,我给你两种常用的方案,看你需求选:

方案1:用React-Quill编辑器组件展示(支持编辑/只读模式)

如果你希望展示的内容还能继续编辑,或者想保持和编辑时完全一致的样式,直接用React-Quill本身来展示就好:

  • 首先确保你已经正确引入React-Quill和它的主题样式(这步很关键,不然样式会乱掉):
import ReactQuill from 'react-quill';
import 'react-quill/dist/quill.snow.css'; // 用snow主题就引入这个,bubble主题换对应的css文件
  • 接着在组件里获取服务器返回的HTML笔记内容,存在状态中,然后把value属性设置为这个HTML字符串就行。如果只想展示不想编辑,加上readOnly={true}:
import { useState, useEffect } from 'react';
import ReactQuill from 'react-quill';
import 'react-quill/dist/quill.snow.css';

function NoteViewer() {
  const [noteHtml, setNoteHtml] = useState('');

  // 模拟从后端获取笔记数据,实际项目里用axios/fetch都行
  useEffect(() => {
    const fetchNote = async () => {
      const res = await fetch('/api/notes/your-note-id');
      const data = await res.json();
      setNoteHtml(data.htmlContent); // 假设后端返回的字段是htmlContent
    };
    fetchNote();
  }, []);

  return (
    <div className="note-container">
      <ReactQuill
        value={noteHtml}
        readOnly={true} // 不需要编辑就开启这个
        theme="snow"
        modules={{ toolbar: false }} // 只读模式下可以隐藏工具栏,更清爽
      />
    </div>
  );
}

export default NoteViewer;

React-Quill本身就能完美解析自己生成的HTML格式,不用额外做转换,只要你存进数据库的是Quill输出的标准HTML就行。

方案2:直接渲染HTML(仅展示,轻量无编辑器功能)

如果只是纯展示,不需要编辑功能,那可以不用React-Quill组件,直接用React的dangerouslySetInnerHTML来渲染,这样更轻量:

import { useState, useEffect } from 'react';

function NoteViewer() {
  const [noteHtml, setNoteHtml] = useState('');

  useEffect(() => {
    const fetchNote = async () => {
      const res = await fetch('/api/notes/your-note-id');
      const data = await res.json();
      setNoteHtml(data.htmlContent);
    };
    fetchNote();
  }, []);

  return (
    <div 
      className="note-content"
      dangerouslySetInnerHTML={{ __html: noteHtml }}
      // 可以加自定义样式匹配你的页面
      style={{ padding: '1rem', fontSize: '16px' }}
    />
  );
}

export default NoteViewer;

⚠️ 注意:dangerouslySetInnerHTML名字里的“dangerously”不是闹着玩的——如果你的笔记内容来自未过滤的用户输入,可能存在XSS攻击风险!所以一定要在后端对存入的HTML做安全过滤,比如用dompurify这类库清理恶意脚本和标签。

几个关键提醒
  • 样式一致性:用方案1的时候,必须引入Quill的主题CSS,不然富文本的列表、字体、颜色等样式会完全丢失,和你编辑时的样子不一样。
  • 数据兼容性:如果你是用Quill生成的HTML存进数据库的,那展示的时候不会有问题;如果是其他来源的HTML,可能需要调整格式才能完美适配React-Quill。
  • XSS防护:不管用哪种方案,后端的内容过滤都不能少,别让恶意脚本通过用户输入注入到你的页面里。

内容的提问来源于stack exchange,提问作者MountainConqueror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:53:16