Ed *_*ida 0 html javascript rendering reactjs
我有这个React组件,其主要目标是在将文章存储为MarkDown(.md文件)并通过将其转换为HTML之后,呈现该文章marked。
import React from 'react';
import marked from 'marked';
import './articles.css';
export default class Articles extends React.Component {
constructor(props) {
super(props);
this.state = {
articles: [],
last_article: ""
}
}
componentWillMount() {
fetch('/last_article', {
headers: {
'Accept': 'text/markdown'
}
})
.then(res => res.text())
.then(txt => marked(txt))
.then(html => {
this.setState({
last_article: html
});
});
}
render() {
return (
<div className="articles">
{this.state.last_article}
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
后端工作正常,可以componentWillMount获取正确的文本并将其完美转换。但是它呈现为:
我不是React专家,以前从未遇到过这个问题。
有什么建议么?
使用如下所述的dangerouslySetInnerHTML方法。
浏览此链接以查看有关dragonallySetInnerHTML及其副作用的正确文档。
class Articles extends React.Component {
constructor(props) {
super(props);
this.state = {
articles: [],
last_article: ""
}
}
componentWillMount() {
this.setState({
last_article: `<h1>Hello</h1>`
});
}
getMarkdownText() {
return { __html: this.state.last_article };
}
render() {
return (
<div className="articles" dangerouslySetInnerHTML={this.getMarkdownText()}/>
);
}
}
ReactDOM.render(
<Articles />,
document.getElementById('root')
)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |