2016-04-20 2 views
0

ここに私のコードです。 className "para"のparaは変更されません。どのように機能が呼び出されているかどうかを確認するには?私はReact.jsによってレンダリングされたhtml要素の内容をonClickを使って変更しようとしています。しかし、このコードは動作していないようです

var Banner = React.createClass({ 
    onBannerClick : function(){ 
     document.getElementsByClassName('para').innerHTML = "Clicked it"; 
    }, 
    render:function(){ 
    return(
    <p className='para' onClick={this.onBannerClick}>Click this</p> 
    ) 
    } 
    }); 
    ReactDOM.render(<Banner/>, 
    document.getElementById('atom') 
) 

答えて

1

反応では、DOMを直接変更しないでください。あなたは、モデル(小道具や状態を変更し、新たなモデルを反映するためにコンポーネントを再レンダリング反応:。

var Banner = React.createClass({ 
    onBannerClick: function(){ // change the model 
     this.setState({ 
      clicked: !this.state.clicked 
     }); 
    }, 
    render:function(){ 
     return(
      <p onClick={this.onBannerClick}> 
       { 
        this.state.clicked && "Clicked it" // according to the model the text is displayed or not 
       } 
      </p> 
     ) 
    } 
}); 

ReactDOM.render(<Banner/>, 
    document.getElementById('atom') 
); 
+0

感謝を働いている私は、IDにクラス名を変更し、それはなぜですか? –

+0

ReactはDOMを制御します。手動で管理する場合は、反応が終了したときを知る必要があります。手動でクリーンアップする必要がありますこれは大丈夫ですが、jQueryプラグインが必然的に必要な場合は、ほとんどの場合、それを行うことでより効果的で簡単になります。 –

0

をしかし、このコードは

var Banner = React.createClass({ 
    onBannerClick : function(){ 
     document.getElementsByClassName('para').innerHTML = "Clicked it"; 
    }, 
    render:function(){ 
    return(
    <p className='para' onClick={this.onBannerClick}>Click this</p> 
    ) 
    } 
    }); 
    ReactDOM.render(<Banner/>, 
    document.getElementById('atom') 
)