2016-07-07 3 views
1

ReactでMarkedライブラリを使用しています。私が抱えている問題は、適切なHTML要素が含まれていれば、Markedの出力がテキストとして出力されることです。ここでは、問題のコードは次のとおりです。「Marked」からの出力をテキストとして返す

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')); 

とhtml:

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

感謝。

+0

なぜあなたはReactでマークダウンを使用していますか?プロジェクトに2つのhtml生成システムがあります(jsxとmd)。他の場所からコンテンツを読み込んでレンダリングしていますか? webpackを使用している場合は、あなたと同じlibを使用する[markdown-loader](https://github.com/peerigon/markdown-loader)のようなツールを使用することを検討してください –

答えて

2

dangerouslySetInnerHTMLを使用してください。 Reactはあなたをxssから守り、これはエスケープハッチです。

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

これはあなたのアプリのセキュリティにとって非常に危険ですが、特にmarkdownのソースがユーザ入力から来た場合。 –

+1

Markedには、変換されるテキストがユーザ入力から来た場合に使用されるべき 'sanitize'オプションがあります。 –

関連する問題