Liệu this.props.match.description
có phải là một chuỗi hoặc một đối tượng? Nếu đó là một chuỗi, nó sẽ được chuyển đổi thành HTML. Thí dụ:
class App extends React.Component {
constructor() {
super();
this.state = {
description: '<h1 style="color:red;">something</h1>'
}
}
render() {
return (
<div dangerouslySetInnerHTML={{ __html: this.state.description }} />
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
Kết quả: http://codepen.io/ilanus/pen/QKgoLA?editors=1011
Tuy nhiên nếu description: <h1 style="color:red;">something</h1>
không có trích dẫn ''
bạn sẽ nhận được:
Object {
$$typeof: [object Symbol] {},
_owner: null,
key: null,
props: Object {
children: "something",
style: "color:red;"
},
ref: null,
type: "h1"
}
Nếu đó là một chuỗi và bạn không thấy bất kỳ đánh dấu HTML nào, vấn đề duy nhất tôi thấy là đánh dấu sai ..
CẬP NHẬT
Nếu bạn đang làm việc với HTMLEntitle. Bạn cần giải mã chúng trước khi gửi chúng đếndangerouslySetInnerHTML
đó là lý do tại sao chúng gọi nó là nguy hiểm :)
Ví dụ làm việc:
class App extends React.Component {
constructor() {
super();
this.state = {
description: '<p><strong>Our Opportunity:</strong></p>'
}
}
htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
render() {
return (
<div dangerouslySetInnerHTML={{ __html: this.htmlDecode(this.state.description) }} />
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));