我想按照reactjs 文档中的描述在reactjs 中使用标记。
<div>{marked(mystring)}</div>
我使用 babel 所以我导入标记如下:
import { marked } from 'marked';
不幸的是,import 语句不起作用。标记未定义。我如何在此处导入标记,以便我可以使用它?
我想按照reactjs 文档中的描述在reactjs 中使用标记。
<div>{marked(mystring)}</div>
我使用 babel 所以我导入标记如下:
import { marked } from 'marked';
不幸的是,import 语句不起作用。标记未定义。我如何在此处导入标记,以便我可以使用它?
这是使用marked
with的一种方法React
:
marked
marked
在您的项目package.json
文件中:// package.json
{
dependencies: {
react: "^17.0.0",
marked: "^4.0.0",
},
}
marked
在您的.jsx
(或相关的)文件中导入:import { marked } from "marked";
import React from "react";
import { marked } from "marked";
class MarkdownExample extends React.Component {
getMarkdownText() {
var rawMarkup = marked.parse("This is _Markdown_.");
return { __html: rawMarkup };
}
render() {
return <div dangerouslySetInnerHTML={this.getMarkdownText()} />;
}
}
该dangerouslySetInnerHTML
属性使您能够使用原始 (HTML) 标记。不过在使用这个属性时一定要小心!
如果您不想使用dangerouslySetInnerHTML
并安全地呈现 HTML。尝试标记react,它在内部用于marked
将 html 元素呈现为react组件
npm i marked-react
import Markdown from "marked-react";
const MarkdownComponent = () => {
return <Markdown>{rawmarkdown}</Markdown>;
};
另一种选择是react-markdown
使用标记包装器react-marked-markdown:
import { MarkdownPreview } from 'react-marked-markdown'
export default ({ post }) => (
<div>
<h1>{ post.title }</h1>
<MarkdownPreview value={ post.content }/>
</div>
)
如果您只想导入标记:
import marked from 'marked';
然后调用组件中的函数:
marked('# Markdown');
这是使用React Hooks标记的另一种使用方式:
- 创建您的 MarkedConverter 组件
import { useState } from 'react'
import marked from 'marked'
export const MarkedConverter = () => {
const [markedVal, setMarkedVal] = useState(
'# Welcome to my React Markdown Previewer!'
)
return <div dangerouslySetInnerHTML={createMarkUp(markedVal)}></div>
}
- 创建标记函数并从 MarkedConverter 组件传递值
export const createMarkUp = (val) => {
return { __html: marked(val) }
}
- 最后,您可以将 MarkedConverter 组件导入到您的任何组件中