在 react-markdown 中呈现 HTML 的任何方式

Any way to render HTML in react-markdown

我正在使用 tinymce 接受来自用户的降价数据。输出数据为html。我想在页面上显示该数据。我正在为此使用 react-markdown。 我可以在页面上看到数据,但它是 HTML 标签。有什么方法可以显示 HTML 页面而不是标签?

export default function ThePage() {
  const markdown = {
    description: "<p>Hello from the other </p>\n<p><strong>side</strong></p>",
  }

  return (
    <>
      <ReactMarkdown children={markdown.description} />
    </>
  );
}

是的,您可以使用 react-render-markup 参见示例:

import { Markup } from "react-render-markup";
 export default function App(){
 return(<Markup markup={markdown.description} />)
 }

是的,你可以;

const [html, setHtml] = useState("<p>Hello from the other </p>\n<p><strong>side</strong></p>");

这样使用

  <div
    dangerouslySetInnerHTML={{
      __html: html,
    }}
 
  ></div>

ReactMarkdown 组件用于渲染标记 down,而不是 HTML 标记 up。给定 HTML 输入,它只是对其进行转义,这就是为什么您将其视为“源”,而不是格式化文本。

如果需要和HTML一起使用需要申请插件,比如rehypeRaw :

import ReactMarkdown from "react-markdown";
import rehypeRaw from "rehype-raw";

//...

export default function ThePage() {
  const markdown = {
    description: "<p>Hello from the other </p>\n<p><strong>side</strong></p>"
  }

  return (
    <>
      <ReactMarkdown children={markdown.description} rehypePlugins={[rehypeRaw]} />
    </>
  );
}