React渲染Markdown & 代码高亮显示 & 代码块复制

使用 react-markdown 实现 markdown 的渲染,使用 @tailwindcss/typography 实现好看的样式。

项目基于 Vite + React + TypeScript搭建,包管理工具使用的是 pnpm,需要安装 TailwindCSS。

首先安装 react-markdownrehype-highlighthighlight.js

pnpm install react-markdown rehype-highlight highlight.js

react-markdown 用于解析 markdown 语法,rehype-highlight 和 highlight.js 用于突出高亮显示代码块。

Markdown 渲染

封装 markdown 组件。新建 src/components/Markdown.tsx 文件:

import ReactMarkdown from "react-markdown";
import rehypeHighlight from "rehype-highlight";

import "highlight.js/styles/atom-one-dark.css";

const Markdown = ({ content }: { content: string }) => {
  return (
    {content}
  );
};

export default Markdown;

App.tsx 文件中引入:

import React, { useState } from "react";
import Markdown from "@/components/Markdown";

function App() {
  const [content, setContent] = useState("");

  const handleInput = (e: React.FormEvent) => {
    setContent(e.currentTarget.value);
  };

  return (