2016-12-19 10 views
1

ポータルの一覧表であるポータルリストページを作成しようとしています。表の各行はポータルへのリンクです。今、このクリックでカスタムアクションを取らなければなりません。私のコードは、今の問題は、上記のコンポーネントのメソッドが呼び出されているレンダリングするとき、それはまた、各行のonclickハンドラを呼び出すと評価しているReactRouterリンクのカスタムonClickハンドラの作成中にエラーが発生しました

var React = require('react'); 
 
var Link = require('react-router').Link; 
 

 
var PortalStore = require('../../stores/portal-store'); 
 

 
var PortalLandingPage = React.createClass({ 
 
\t getInitialState: function() { 
 
     return PortalStore.getPortalList(); 
 
    }, 
 
    updateAuthorizationCookie: function (portalIdHash) { 
 
     PortalStore.setPortalIdHash(portalIdHash); 
 
     PortalStore.generateAuthToken(); 
 
     this.transitionTo('portalHome', {portalIdHash: portalIdHash}); 
 
    }, 
 
    render: function() { 
 
     var createPortalRow = function (portal) { 
 
      return (
 
       <tr key={portal.portalId}> 
 
        <td> 
 
         <Link to='portalHome' 
 
           params={{ 
 
            portalIdHash: portal.portalIdHash, 
 
            contentId: portal.portalId 
 
           }} 
 
           onClick={this.updateAuthorizationCookie(portal.portalIdHash)} 
 
         >{portal.portalName}</Link> 
 
         <b></b> 
 
         <hr align="left" width="100%"></hr> 
 
        </td> 
 
       </tr> 
 
      ); 
 
     }; 
 
\t \t return (
 
\t \t \t <table className="table"> 
 
\t \t \t \t <thead> 
 
\t \t \t \t <tr><th> 
 
\t \t \t \t \t Name 
 
\t \t \t \t \t <b></b> 
 
\t \t \t \t \t <hr align="left" width="100%"></hr> 
 
\t \t \t \t </th></tr> 
 
\t \t \t \t </thead> 
 
\t \t \t \t <tbody> 
 
\t \t \t \t {this.state.portalList.map(createPortalRow, this)} 
 
\t \t \t \t </tbody> 
 
\t \t \t </table> 
 
\t \t </div>); 
 
    } 
 
} 
 
module.exports = PortalLandingPage;

like-見えます。代わりに、私の要件は、ユーザーがリンクをクリックしたときにのみonClickハンドラが呼び出されるということです。私はまた、ハンドラの周りのカッコを削除しようとしましたが、コンパイル時にエラーが発生します。

<Link to='portalHome' 
 
           params={{ 
 
            portalIdHash: portal.portalIdHash, 
 
            contentId: portal.portalId 
 
           }} 
 
           onClick=this.updateAuthorizationCookie(portal.portalIdHash) 
 
         >{portal.portalName}</Link>

私のコードが間違っているものを提案してください。

答えて

0

onClickに渡す関数を呼び出しているので、イベントが呼び出されると、その関数の(未定義)の結果が呼び出されます。関数参照自体を渡す必要があります。または、矢印関数を使用しているので、関数を呼び出す無名関数を渡します。

onClick={() => this.updateAuthorizationCookie(portal.portalIdHash)} 
関連する問題