【让你的md的代码块高亮】 react-showdown codeBlock高亮

这篇博客介绍了如何在React应用中使用`react-markdown`和`react-syntax-highlighter`库来渲染Markdown代码,并展示了如何自定义组件以实现代码高亮。特别是,当遇到代码块较短或包含特定字符时,如何决定是否进行高亮显示。通过修改条件判断,可以优化代码高亮的逻辑,提高阅读体验。
摘要由CSDN通过智能技术生成
import React from 'react'
import ReactDom from 'react-dom'
import ReactMarkdown from 'react-markdown'
import {Prism as SyntaxHighlighter} from 'react-syntax-highlighter'
import {atomDark} from 'react-syntax-highlighter/dist/esm/styles/prism'

// Did you know you can use tildes instead of backticks for code in markdown? ✨
const markdown = `Here is some JavaScript code:

~~~js
console.log('It works!')
~~~
`

ReactDom.render(
  <ReactMarkdown
    children={markdown}
    components={{
      code({node, inline, className, children, ...props}) {
        return !inline && match ? (
          <SyntaxHighlighter
            children={String(children).replace(/\n$/, '')}
            style={atomDark}
            PreTag="div"
            {...props}
          />
        ) : (
          <code className={className} {...props}>
            {children}
          </code>
        )
      }
    }}
  />,
  document.body
)

当遇到code Block过短而不想高亮,或者含有特殊字符的code Block高亮
我们把上面的代码稍作修改

        return !inline &&  (children[0].length > 40 || /\.\/|\//.test(children[0])) ? (
          <SyntaxHighlighter
            children={String(children).replace(/\n$/, '')}
            style={atomDark}
            PreTag="div"
            {...props}
          />
        )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值