2016-09-14 13 views
2

ちょっと〜私は、同じOnClick on Reactでsubmit関数とgoogleのクリックイベントを発生させようとしています。どのように私はこれをReactで行うのですか?Reactで2つのonClick関数を追加する方法

これはコードです:

<button className={s.button} onClick={this.submit} onClick={() => {gaClickEvent('where-to-buy', 'submit' , undefined)}}> 
+0

を行うことができますか? – Kafo

答えて

5

これには2通りの方法があります。

まず、ES6関数のリテラル構文でインラインで定義しているクリックハンドラに2つのステートメントを挿入できます。

​​

しかし、これは私がonClickハンドラを使いこなすのに便利なコードです。私があなただったら、このロジックをコンポーネントのハンドラメソッドに分けます。例:最初の1の2番目のonClickを呼び出さない理由

var MyComponent = React.createClass({ 
    handleClick() { 
    gaClickEvent('home-where-to-buy', 'submit' , undefined); 
    this.submit(); 
    }, 
    render() { 
    return <button 
     className={s.button} 
     onClick={(e) => this.handleClick(e)} > 
     I am a button! 
     </button>; 
    } 
}) 
+0

お返事ありがとうございます。最初の方法を試しましたが、フォームを送信しません。代わりに、 'Uncaught TypeError:未定義のpreventDefault 'を読み取れません。 – bluegen1e

+0

これはサブミット関数' submit(e){ e.preventDefault();です。 if(this.refs.input.value.length === 5){ this.context.router.push( '/ where-to-buy /?zip =' + this.refs.input.value); } } ' – bluegen1e

+0

私はそれがうまくいくように私の答えを変更しました。 –

0

あなたはこの

class Mycomponent extends React.component { 
submit(e) { 
    //handle event 
} 
render() { 
    return <button className={s.button} onClick={this.submit.bind(this)} /> 
} 
} 
関連する問題