我使用一个名为react-markdown的npm包将一段标记文本转换为HTML代码:
import React, { PureComponent } from 'react';
import ReactMarkdown from 'react-markdown';
let body = '## Some markdown text in multiple paragraphs';
class Post extends PureComponent {
render() {
<ReactMarkdown source={body} />
}
}
export default Post;这很好,除非用标准的<p>标记呈现单个段落。在我的用例中,我需要将它们呈现为自定义组件,比如<MyParagraph>。换言之,请考虑以下输入案文:
This is paragraph one.
Lorem ipsum doler sit.
This is paragraph two.react-markdown将标记呈现为:
<p>This is paragraph one.</p>
<p>Lorem ipsum doler sit.</p>
<p>This is paragraph two.</p>我需要的是:
<MyParagraph>This is paragraph one.</MyParagraph>
<MyParagraph>Lorem ipsum doler sit.</MyParagraph>
<MyParagraph>This is paragraph two.</MyParagraph>这个模块可以吗?还是我该用点别的?
发布于 2019-07-16 06:16:15
我发现了这个:https://github.com/rexxars/react-markdown/issues/218
renderers属性有助于创建自定义组件。
import ReactDOM from "react-dom";
import React, { PureComponent } from "react";
import ReactMarkdown from "react-markdown";
let body =
"## Some markdown text in multiple paragraphs\n\nAnd this is a paragraph 1\n\nAnd this is a paragraph 2\n\nAnd this is a paragraph 3";
const MyParagraph = props => (
<p>This is inside MyParagraph, and the value is {props.children}</p>
);
// see https://github.com/rexxars/react-markdown#node-types
const renderers = {
paragraph: props => <MyParagraph {...props} />
};
class Post extends PureComponent {
render() {
return <ReactMarkdown source={body} renderers={renderers} />;
}
}
export default Post;
ReactDOM.render(<Post />, document.getElementById("root"));下面是上面代码的代码框:https://codesandbox.io/s/awesome-surf-r05kb?fontsize=14
https://stackoverflow.com/questions/57050107
复制相似问题