reactjs - 选项卡内的 url 重定向 - React

标签 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”时,它会将我重定向到应用程序的另一个网址(比如“/Home”)。 我知道有一种方法可以使用Home,但我似乎无法将其添加到我的中。

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

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

我收到了 selectedKey 并且可以重新加载,但我不知道如何转到方法中的另一个 URL。

*我的应用程序是本地的,因此一切都在客户端。

谢谢

最佳答案

将您的路线传递给 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 case 放入 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>
    );
  }

关于reactjs - 选项卡内的 url 重定向 - React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43983479/

相关文章:

javascript - 如何根据路由有条件地渲染特定的 html 部分

javascript - React-Router 外部链接

javascript - 强制react-router应用程序向服务器发送URL请求

reactjs - 我应该在 Redux + ReactJS 中从哪里加载服务器数据?

javascript - react 钩子(Hook) : handle multiple inputs

reactjs - 如何风格化 material-ui select

javascript - react-table 排序不适用于具有自定义单元格的列

reactjs - Redux Toolkit 配置,对于全栈应用程序来说是否正确?

javascript - 如何将 URL 参数传递给 ReactJS 中的渲染函数

reactjs - 来自react-router-redux的 "push"方法和来自react-router的 "browserHistory"有什么区别?