2016-12-22 9 views
0

ここをクリックすると、その下に表示されるライブ更新テキストが入力されています。私はボタンをクリックし、HTMLスパンまたはdivタグで入力された各単語をラップするために、ユーザをクリックしたいと思います。私はそれをすべて文字列として出力することができますが、htmlとして解釈する必要があります。出力メッセージにHTMLを挿入するにはどうすればいいですか?

class App extends Component { 
    constructor(props) { 
     super(props); 

     this.state = { message: '' }; 

    } 

    onChange(e) { 
     this.setState({message: e.target.value}); 
    } 

    onClick(e) { 
     var text = this.state.message.split(" "); 
     console.log(text); 
     var newText = ""; 
     text.forEach(function(element) { 
      newText += "<div>" + element + "</div>"; 
     }); 
     this.setState({message: newText}); 
    } 


    render() { 

     return (
      <div> 
       <InputBar onChange={this.onChange.bind(this)} value={this.state.message}/> 
       <UpdateCss onClick={this.onClick.bind(this)} /> 
       <Output message={this.state.message} /> 
      </div> 
     ) 
    } 
} 

ReactDOM.render(<App />, document.querySelector('.container')); 

現在、<div>this</div><div>is</div><div>a</div><div>string</div>のように出力されます。私が見ていない簡単な方法がありますか?

+0

バインディング関数は次のようにコンストラクタの内部に置く必要があります。this.onChange = this.onChange.bind(this);詳細については、http://egorsmirnov.me/2015/08/16/react-and-es6-part3.htmlを参照してください。 – Chad

+0

ここで受諾された回答を確認してください:http://stackoverflow.com/questions/19266197/reactjs-convert-to-html ** XSSの脆弱性の多様性** –

答えて

関連する問題