2016-07-07 8 views
1

Ich verwende die Marked Bibliothek mit React. Das Problem, das ich habe, ist, dass die Ausgabe von Marked als Text gerendert wird, wenn es richtige HTML-Elemente enthält. Hier ist das Problem Code:Reagieren Renderausgabe von "Markiert" als Text

class Main extends React.Component{ 
render() { 
console.log(this) 
console.log(marked('I am using __markdown__.')); 
return (
    <div className="container"> 
    <div className="row"> 
     <div className="col-md-6"> 
     {marked('I am using __markdown__.')} 
     </div> 
     <div className="col-md-6"> 
     <h1>Oh hello</h1> 
     </div> 
    </div> 
    </div> 
) 
} 
}; 

React.render(<Main />, document.getElementById('app')); 

und die html:

<div id="app"></div> 

Dank.

+0

Warum verwenden Sie Markdown mit React? Sie haben nun zwei HTML-Generierungssysteme in Ihrem Projekt (jsx und md). Laden Sie den Inhalt von woanders und Rendern? Wenn Sie Webpack verwenden, sollten Sie ein Tool wie [markdown-loader] (https://github.com/peerigon/markdown-loader) verwenden, das die gleiche lib wie Sie verwendet. –

Antwort

2

Verwenden Sie dangerouslySetInnerHTML. React verhindert, dass du von xss kommst, und dies ist die Escape-Luke.

<div 
    className="col-md-6" 
    dangerouslySetInnerHTML={{ 
     __html: marked('I am using __markdown__.') 
    }} 
/> 
+0

Dies kann sehr gefährlich für die Sicherheit Ihrer App sein, vor allem, wenn die Quelle für den Abschlag von Benutzereingaben stammt. –

+1

Markiert hat eine 'Sanitize'-Option, die verwendet werden sollte, wenn der zu konvertierende Text von Benutzereingaben stammt. –

Verwandte Themen