Ant design pro-项目探究(7)react的markdown编辑器

本文介绍了如何在React中集成markdown编辑器react-markdown-editor-lite,并结合markdown-it实现多样化的文本输入,重点讲解了图片上传功能的实现,包括遇到的问题和解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

普通的input和textarea已满足大部分的文本记录,但想要让输入文本更加多样化,markdown编辑器可谓是yyds。但是vue版本的markdown编辑器众多,基于react版本的编辑器就相当少一些。以下是整合和探究react版本的markdown的实践。

  • react-markdown-editor-lite
    官网或者直接搜索即可获得安装的办法
npm install react-markdown-editor-lite --save
# or
yarn add react-markdown-editor-lite
  • 结合markdown-it
npm install markdown-it --save
  • 页面引入样式、react-markdown-editor-lite,结合markdown-it
import MarkdownIt from 'markdown-it';
import MdEditor from 'react-markdown-editor-lite';
// 导入编辑器的样式,不导入会出现毫无样式情况
import 'react-markdown-editor-lite/lib/index.css';
  • 组件调用
const Demo = () => {
// 数据保存
const [value, setValue] = useState("")
	// markdown-it 利用设置参数,具体查询markdown-it官网
  const mdParser = new MarkdownIt({
    html: true,
    linkify: false,
    typographer: true
  		}).enable('image');
	}
	// 检测markdown数据变化
  function handleEditorChange({html, text}) {
    setValue(text)
    console.log('handleEditorChange', html, text);
   }
return (
	<MdEditor
        value={value}
        onChange={handleEditorChange}
        renderHTML={text => mdParser.render(text)}
        style={
          {height: 400}
        }
        onImageUpload={
          async (file) => {
            const formData = new FormData()
            formData.append('files', file)
            // 自行图片上传功能,利用form文件表单
            return await postUrl(formData).then(
              (res => {
                if (res.code === 200) {
                  return res.data
                } else {
                  message.error("图片过大,请上传小于1mb的图片")
                }
              })
            )
          }
        }
      >
      </MdEditor>
	)
}

  • 运行截图

在这里插入图片描述

  • 至于其他功能可以利用markdown-it进行设置
  • 总结
    markdown的编辑器的调用并不困难,但是在实现图片上传这个功能时还是遇到了瓶颈,主要跟请求拦截器那块有了冲突,要先去掉拦截器的请求头部,让自动生成headers即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值