ジャンボモナカ

34歳のハゲデブがHTML5ハイブリッドアプリ開発プラットフォームmonacaを始めました。

ReactでinnerHTMLを実行したい

React.Componentのrenderメソッドでhtmlを描画する時に、htmlが含まれている場合は、エスケープされてしまう。

class Hoge extends React.Component {
  constructor(props) {
    super(props);
  }

  render(){
    //fooにhtmlが含まれていてもエスケープされてしまう
    return <span>{foo}</span>
  }
}

そこでエスケープされずにinnerHTMLのようにhtmlとして実行して欲しい場合は、dangerouslySetInnerHTML属性を使って描画することができるようだ。

class Hoge extends React.Component {
  constructor(props) {
    super(props);
  }

  render(){
    let createMarkup = function(){
      return {__html: '<span>foo</span>'};
    }
    //fooにhtmlが含まれていてもエスケープされてしまう
    return <span dangerouslySetInnerHTML={createMarkup()}></span>
  }
}

確かにhtmlとして認識してくれたが、dangerouslySetInnerHTML属性ってまたどっ直球すぎてすごい名前だな。