Czy this.props.match.description
Czy ciąg znaków lub obiekt? Jeśli jest to ciąg znaków, powinien zostać przekonwertowany do formatu HTML. Przykład:
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'));
Wynik: http://codepen.io/ilanus/pen/QKgoLA?editors=1011
Jednak jeśli description: <h1 style="color:red;">something</h1>
bez cudzysłowów ''
masz zamiar dostać:
Object {
$$typeof: [object Symbol] {},
_owner: null,
key: null,
props: Object {
children: "something",
style: "color:red;"
},
ref: null,
type: "h1"
}
jeśli jest to ciąg i nie widać żadnych znaczników HTML jedyny problem, jaki widzę, to niewłaściwy znacznik.
UPDATE
Jeśli masz do czynienia z HTMLEntitles. Trzeba ich dekodowania przed ich wysłaniem do dangerouslySetInnerHTML
dlatego nazwali go niebezpiecznie :)
przykład robocza:
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'));
Nie widać, aby zamknąć ofertę w pierwszy przykład. – Li357
OK, ale pytanie wciąż jest aktualne. –
Nie mówiąc, pytanie jest nieprawidłowe, tylko główka w górę :) – Li357