2015-09-09 24 views
6

何かが欠落しています。ここでは非常に単純な世界です。目標は警告イベントonClickを起動することです。ページが読み込まれるとイベントが発生しますが、ボタンをクリックした場合は発生しません。私は助けに感謝します。ここではそれが簡単に参照できるようにすることjsFiddleです:ReactJS私はこのイベントを発射するあなたの方法がうまくいくとは思わないだけではJavaScriptですのでjsFiddleonClickイベントに反応する

var Hello = React.createClass({ 
render: function() { 
    return <button onClick={alert("Hello World!")}> 
       Click Me 
      </button>; 
} 
React.render(<Hello />, document.getElementById('container')); 

答えて

12

私は、あなたがこの間違っについてつもりだと思います。あなたのonClickはあなたのReact要素に付けられた関数を起動するはずです。

var Hello = React.createClass({ 
    myClick: function() { 
     alert("Hello World!"); 
    }, 
    render: function() { 
     return <button onClick={this.myClick}> 
        Click Me 
       </button>; 
    } 
}); 

React.render(<Hello />, document.getElementById('container')); 
+1

ありがとう:これはあなたが何かを迅速/インラインをしたい場合は、それを行うための別の方法です。私はこれまで同様のことを試していましたが、それは間違った道を私に送りました。再度ありがとう –

+0

問題はありません、幸運と受け入れられたとして答えをマークしていただきありがとうございます! –

+0

このリアクションコードは、2018年にCodepenで動作しないようです。React.renderをReactDOM.renderに変更しましたが、ページ上にボタンは表示されません。 –

0

私は以前に問題があった理由を知りました。関数に引数を渡そうとしたときに問題が発生しました。

var Hello = React.createClass({ 
    myClick: function (text) { 
     alert(text); 
    }, 
    render: function() { 
     return <button onClick={this.myClick("Hello world")}> 
        Click Me 
       </button>; 
    } 
}); 

これは元のコードと同じ動作をします。

2

実行される関数にパラメータがある場合は、されには次のように関数にバインドする必要があります。

var Hello = React.createClass({ 
    handleClick: function (text) { 
     alert(text) 
    }, 

    render: function() { 
     return <button onClick = { 
      this.handleClick.bind(null, "Hello World") 
     } > Click Me < /button>; 
    } 
}); 

React.render(<Hello/> , document.getElementById('container')); 

これは今理にかなっています。もう一度@クリス・ホークスが正しい方向に向いてくれてありがとう。

7

注:働くクリス・ホークス、@

<button onClick={()=>{ alert('alert'); }}>alert</button> 
+0

OnClickは、ページを読み込むたびにアラートを維持します。 onClick = {thisFunc()}を実行する代わりにonClick = {()=> thisFunc} –

関連する問題