2017-04-04 13 views
1

ReactアプリケーションでReact-Bootstrapを使用してナビゲーションタブを実装しました。反応ブートストラップで変更されたタブでイベントを呼び出す方法

<Tabs defaultActiveKey={1}> 
    <Tab eventKey={1} title="Log in"> 
     {/* Irrelevant code */} 
    </Tab> 
    <Tab eventKey={1} title="Sign up"> 
     {/* Irrelevant code */} 
    </Tab> 
</Tabs> 

今、私は、次の目的球を呼び出すしたいタブを変更する上:

loginLog inタブが選択されたときのために trueなりブールある
changeTab(login) { 
    if (login) 
     this.setState({ heading: "Log in" }) 
    else 
     this.setState({ heading: "Sign up" }) 
} 

このよう

Sign upタブが選択されている場合はfalseです。

どうすればいいですか?

編集:

<Tabs defaultActiveKey={1} onClick={()=>this.changeTab()}> 
    <Tab eventKey={1} title="Log in"> 
     {/* Irrelevant code */} 
    </Tab> 
    <Tab eventKey={1} title="Sign up"> 
     {/* Irrelevant code */} 
    </Tab> 
</Tabs> 

しかし、どのように私がクリックされたタブを知ることができます。

私はあなたがタブは、次のようにクリックされたときに関数を呼び出すことができますことを考え出しましたか?どのタブがクリックされたかに基づいて状態を変更する必要があります。

+0

みました。このよう

1)title = "ログイン" onClick = {()=> this.changeTab()}> ' –

+0

ええ、それはうまくいきませんでしたので、今ここでお尋ねします。 –

+0

ああ、それはそのように動作します、いくつかの微妙な調整をしなければならなかったが、それはうまくいった。ありがとう。 –

答えて

2

解決策が見つかりました。 TabsコンポーネントにonSelectを使用する必要があります。その後、

<Tabs defaultActiveKey={1} onSelect={this.handleSelect()}> 
    <Tab eventKey={1} title="Log in"> 
     {/* Irrelevant code */} 
    </Tab> 
    <Tab eventKey={1} title="Sign up"> 
     {/* Irrelevant code */} 
    </Tab> 
</Tabs> 

そして、これはあなたのhandleSelect機能します: `<タブのeventKey = {:あなたはこのように、タブ上の` onClick`イベントを定義することにより、

handleSelect(key) { 
    if (key === 1) 
     this.setState({ heading: "Log in" }) 
    else 
     this.setState({ heading: "Sign up" }) 
} 
関連する問題