选项卡中的URL重定向-React

时间:2017-05-15 15:35:01

标签: reactjs react-router react-router-redux

我目前正在尝试将路由器添加到我的应用程序中,但是当我点击选项卡时,我仍然无法重定向到新的URL。

我使用React-Bootstrap来制作这个标签:

<div className="divide-nav">
  <div className="container">
                  <Tabs defaultActiveKey={1} id="uncontrolled-tab-example" onSelect={this.handleSelect}>
                        <Tab eventKey={1}  title="Blabla"></Tab>
                        <Tab eventKey={2}  title="Home" ></Tab>
                        <Tab eventKey={3}  title="Blabla" ></Tab>
                        <Tab eventKey={4}  title="Blabla" ></Tab>
                        <Tab eventKey={5}  title="Blabla" ></Tab>
                        <Tab eventKey={6}  title="Blabla" ></Tab>
                        <Tab eventKey={7}  title="Blabla" ></Tab>
                        <Tab eventKey={8}  title="Blabla" ></Tab>
                        <Tab eventKey={9}  title="Blabla" ></Tab>
                        <Tab eventKey={10} title="Blabla" ></Tab>                            
                    </Tabs>


  </div>
</div>

现在我要做的就是当我点击让我们说“Home”时,它会将我重定向到我的应用程序的另一个URL(让我们说“/ Home”)。 我知道有一种方法可以用 &lt;链接到=“/ Home”&gt; Home&lt; /链接&gt; 但我似乎无法将其添加到我的&lt;标签&gt;

我还尝试添加一个handleSelect()方法,该方法接收selectedKey并执行操作:

handleSelect(selectedKey) {
 switch(selectedKey) {
    case 1 :
        location.reload();
    break;
    case 2 :
        //redirect url to =>('/Home')
    break;
 }
},

我收到了selectedKey并且可以重新加载,但我不知道如何转到方法中的其他网址。

*我的应用程序是本地的,所以一切都是客户端。

谢谢

1 个答案:

答案 0 :(得分:0)

将您的路线传递到eventKey,然后在 handleSelect 中,通过history.push方法更改路线

 handleSelect(route) {
    // Get your route name from params and pass it to history.push()
    this.props.history.push(route)
  }

  render() {
    return (
      <div className="divide-nav">
        <div className="container">
          <Tabs defaultActiveKey={1} id="uncontrolled-tab-example"  
             onSelect={this.handleSelect.bind(this)}>

            // Here eventKey will hold the route name
            <Tab eventKey={'/link1'} title="Link 1"></Tab>
            <Tab eventKey={'/link2'} title="Link 2"></Tab>
            <Tab eventKey={'link3'} title="Link 3" ></Tab>
          </Tabs>
        </div>
      </div>
    );
  }

如果您想将eventKeys保留为整数,则将switch cases放入handleSelect

  handleSelect(eventKey) {
    let route;
    // Switch cases based on eventKeys
    switch (eventKey) {
      case 1:
        route = 'link1';
        break;
      case 2:
        route = 'link2';
        break;
      case 3:
        route = 'link3';
        break;
      default:
        route = '/';
    }
    this.props.history.push(route)
  }

  render() {
    return (
      <div className="divide-nav">
        <div className="container">
          <Tabs defaultActiveKey={1} id="uncontrolled-tab-example" 
            onSelect={this.handleSelect.bind(this)}>
            <Tab eventKey={1} title="Link 1"></Tab>
            <Tab eventKey={2} title="Link 2"></Tab>
            <Tab eventKey={3} title="Link 3" ></Tab>
          </Tabs>
        </div>
      </div>
    );
  }