首页 > 其他分享 >Antdesign React之markdown文档渲染

Antdesign React之markdown文档渲染

时间:2024-12-21 19:11:38浏览次数:4  
标签:content markdown return react React MarkdownView Antdesign import

能够渲染代码块,样式可以让ai生成,使用前需要安装对应依赖
markdownview.tsx

import React from 'react';
import ReactMarkdown from 'react-markdown';
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
import { vscDarkPlus } from 'react-syntax-highlighter/dist/esm/styles/prism';

interface MarkdownViewProps {
  content: string;
}

const MarkdownView: React.FC<MarkdownViewProps> = ({ content }) => {
  if (!content) return null;

  return (
    <div className="markdown-container">
      <ReactMarkdown
        components={{
          code({ node, inline, className, children, ...props }: {
            node?: any;
            inline?: boolean;
            className?: string;
            children?: React.ReactNode;
          }) {
            const match = /language-(\w+)/.exec(className || '');
            return !inline && match ? (
              <SyntaxHighlighter
                style={vscDarkPlus}
                language={match[1]}
                PreTag="div"
              >
                {String(children).replace(/\n$/, '')}
              </SyntaxHighlighter>
            ) : (
              <code className={className} {...props}>
                {children}
              </code>
            );
          },
          img({ src, alt, ...props }) {
            const publicPath = process.env.PUBLIC_URL || '';
            const imgSrc = src?.startsWith('http') ? src : `${publicPath}${src}`;
            return (
              <img
                src={imgSrc}
                alt={alt}
                style={{ maxWidth: '100%' }}
                {...props}
              />
            );
          }
        }}
      >
        {content}
      </ReactMarkdown>
    </div>
  );
};

export default MarkdownView;

使用方法

import MarkdownView from '@/pages/MarkdownView/MarkdownView';

export default () => {
  return(
    <MarkdownView content={`123`} />
  )
};

标签:content,markdown,return,react,React,MarkdownView,Antdesign,import
From: https://www.cnblogs.com/chiusto/p/18621037

相关文章

  • Antdesign React之API展示页面
    本项目基于antdesignpro,点击调试后跳转弹窗,左边展示public/doc路径下的md文档并且通过markdownview渲染成md,右侧是json编辑器index.tsximportReact,{useState,useMemo}from'react';import{Layout,Menu,theme,Row,Col}from'antd';import{HomeOutlined,Fir......
  • Markdown学习
    Markdown学习字体格式加粗CTRL+B斜体CTRL+I斜体加粗下划线删除线引用开始新篇章分割线图片超链接点击跳转列表ABAB表格名字成绩张三999代码javeisverygood......
  • 移动端笔记应用,markdown应用选用
    要求不能有广告。作为使用频率较高的软件,有广告就是恶心人。支持markdown,包括且不限于代码块、标题、图片等格式。支持同步,至少拥有WebDav云同步,或者本地导入导出。全局搜索功能。以上功能必须免费,至少我不明白导入导出有什么好付费的。云同步这种付费理所当然。背景早......
  • React之Json编辑器
    我们先看下效果,这个白色是不是非常不错?没有太多复杂的功能,就是当一个简洁显示json并且进行编辑的功能接下来是代码部分importAceEditorfrom'react-ace';import{Button,Modal}from'antd';import'./styles.css';//Importaceeditorthemesandmodesimport'ac......
  • Marp 入门与教程:让你一分钟爱上Markdown写PPT的乐趣
    Marp入门与教程一、什么是Marp?Marp是一个基于Markdown的开源幻灯片制作工具,可以轻松将Markdown文档转换为精美的幻灯片。其核心是Marpit框架,支持可定制主题、多种输出格式和动态功能。与LaTeX的Beamer比较:对比项MarpLaTeX(Beamer)易用性使用Markdown语......
  • React性能优化实战:从理论到落地的最佳实践
    "这个列表页怎么这么卡?"产品经理皱着眉头看着我。作为一个接手海外电商项目的前端开发者,我深知性能问题的重要性。特别是在东南亚市场,很多用户使用的是中低端手机,网络条件也不太理想。最近一个月,我带领团队对整个React应用进行了一次全面的性能优化,不仅解决了性能问题,还总......
  • MARKDOWN语法
    前提:markdown的所有语法都是用英文键写的,+不用敲内容梗概:标题(1至6级标题),粗体,斜体,斜体加粗,废弃号,引用,分割线,图片,超链接,列表(有序无序),表格,代码标题:#+空格+内容    一级标题:#内容                        二级标题:#......
  • React+Vite从零搭建项目及配置详解
    相信很多React初学者第一次搭建自己的项目,搭建时会无从下手,本篇适合快速实现功能,熟悉React项目搭建流程。目录一、创建项目react-item二、调整项目目录结构三、使用scss预处理器四、组件库AntDesign五、配置基础路由六、配置别名路径一、创建项目react-itemnpmc......
  • 大文件传输与断点续传实现(极简Demo: React+Node.js)
    大文件传输与断点续传实现(极简Demo:React+Node.js)简述使用React前端和Node.js后端实现大文件传输和断点续传的功能。通过分片上传技术,可以有效地解决网络不稳定带来的传输中断问题。文章内容前端实现(React)首先,您需要在前端项目中安装axios、spark-md5库以处理HTTP请求。可以......
  • React的使用笔记1 React 项目的创建与JSX基础知识
    时间久远,工作中没有遇到react的情况,早就忘记React怎么写了~回顾一下吧。React项目的搭建npxcreat-react-appapp-nameReact项目的运行具体可以参考README中的说明,没有特殊的情况下,直接npmstart删除项目src目录中不必要的代码先,仅保留入口文件即可,即App.js与index.j......