2016-09-26 6 views
1

ユーザーが反応プロジェクトのボタンをクリックすると、いくつかのトラッキングコードを実行します。ただし、ユーザーが新しいタブで開くとクリックハンドラは実行されません。React jsの "新しいタブでリンクを開く"をクリックした場合のonClickコードの処理方法

React jsでの解決策はありますか?

簡単な例:

var Hello = React.createClass({ 
    render: function() { 
     function click(event) { 
      event.preventDefault(); 
      console.log('You can see me even is user clicked on "open link in new tab"') 
     } 
     return <div > 
      < a href = '#' 
     target = "_blank" 
     onClick = { click } > Go there < /a> < /div>; 
    } 
}); 

React.render(< Hello/> , document.body); 
+0

をあなたがインサイドハンドルを置く機能をレンダリングしたい理由は? –

+0

私はあなたのコードがうまくいくと思います。私はそれを[jsfiddle](https://jsfiddle.net/normanganderson/wk6fjdp9/)に入れました。あなたのコンソールを開くと、メッセージが記録されるのを見るでしょう。 – CallMeNorm

答えて

0

これは正常に動作する必要があります -

const Hello = React.createClass({ 

      click(event) { 
        //here this is the component 
        event.preventDefault(); 
        console.log('You can see me even is user clicked on "open link in new tab"') 
      }, 

      render() { 
      return <div > 
        < a href = '#' 
       target = "_blank" 
       onClick = { this.click ///or this.click.bind(this) if you want to have this point to the component } > Go there < /a> < /div>; 
      } 
    }); 
+0

これは、 'click'があなたの使っている方法では定義されていないので動作しません。 render関数で 'this.click'を行う必要があります。 – CallMeNorm

+0

はい、そうです...私はそれを逃しました..それはこれでなければなりません。クリック... –

+0

ありがとうございますが、マウスを右クリックして "新しいタブでリンクを開く"をクリックすると、 。これは私の問題です! –

関連する問題