当前位置:首页 > React

react实现markdown

2026-01-26 14:10:47React

React 实现 Markdown 编辑器

使用 React 实现 Markdown 编辑器可以通过以下方法完成,结合现有库或自定义解析逻辑。

使用现成库(推荐)

安装 react-markdownmarked 等流行库:

npm install react-markdown

基本示例代码:

import React from 'react';
import ReactMarkdown from 'react-markdown';

function MarkdownEditor() {
  const [markdown, setMarkdown] = React.useState('# Hello World');

  return (
    <div>
      <textarea 
        value={markdown}
        onChange={(e) => setMarkdown(e.target.value)}
      />
      <ReactMarkdown>{markdown}</ReactMarkdown>
    </div>
  );
}

自定义解析逻辑

如果需要轻量级实现,可以编写简单的转换函数:

function parseMarkdown(text) {
  return text
    .replace(/^# (.*$)/gm, '<h1>$1</h1>')
    .replace(/^## (.*$)/gm, '<h2>$1</h2>')
    .replace(/`([^`]+)`/g, '<code>$1</code>');
}

function MarkdownPreview({ text }) {
  const html = parseMarkdown(text);
  return <div dangerouslySetInnerHTML={{ __html: html }} />;
}

添加语法高亮

结合 highlight.js 实现代码块高亮:

npm install highlight.js

使用示例:

import hljs from 'highlight.js';
import 'highlight.js/styles/github.css';

function HighlightMarkdown({ children }) {
  useEffect(() => {
    hljs.highlightAll();
  }, [children]);

  return <ReactMarkdown>{children}</ReactMarkdown>;
}

支持扩展语法

通过 remark 插件生态系统支持表格、数学公式等:

npm install remark-gfm remark-math rehype-katex

配置示例:

react实现markdown

import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import rehypeKatex from 'rehype-katex';

<ReactMarkdown
  remarkPlugins={[remarkGfm, remarkMath]}
  rehypePlugins={[rehypeKatex]}
>
  {markdownContent}
</ReactMarkdown>

注意事项

  • 自定义解析时需注意 XSS 防护
  • 大型文档考虑虚拟滚动优化性能
  • 移动端需添加合适的输入体验优化
  • 保存状态时建议同时存储原始 Markdown 和渲染结果

以上方案可根据项目需求组合使用,现成库适合快速开发,自定义解析适合特定需求场景。

标签: reactmarkdown
分享给朋友:

相关文章

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 进行组件记忆 React.memo 是一个高阶组件,用于缓存函数组件的渲染结果,避免不必要的重新渲染。只有当组件的 props 发生变化时,才…

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

如何运行react

如何运行react

运行 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网 Node.js 下载并安装最新稳定版本。安装完成后,验证版本: node…

react如何循环

react如何循环

循环渲染列表 在React中循环渲染列表通常使用map方法,这是最常用的方式。通过map可以将数组中的每个元素转换为React元素并渲染到页面上。 const items = ['Apple', '…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

react如何扩展

react如何扩展

扩展 React 项目的常用方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式。通过包裹组件并注入额外属性或逻辑,可以实现功能扩展。例如,一个日志记录的高阶组件: function…