【问题标题】:React Router Link not rendering as clickable buttonReact Router Link 未呈现为可点击按钮
【发布时间】:2019-05-20 23:34:55
【问题描述】:

不太确定我在这里做错了。我有一个标题组件,然后我在我的主应用程序组件中使用它,其中我的“页面”组件根据应用程序有条件地呈现。手动转到路由是可行的,但是 React Router 的 Link 组件不会将链接呈现为可点击的按钮,因此我无法点击任何东西......

这是我的标题组件:

function Header(props) {

    const links = props.links.map(link => {
        return (

            <Link to={{pathname: link.path}} key={link.title}>{link.title}</Link>

        );
    });

    return(
        <Navbar className="border-bottom" bg="transparent" expand="lg">
            <Navbar.Brand href="#home">Garrett Love</Navbar.Brand>
            <Navbar.Toggle className="border-0" aria-controls="basic-navbar-nav" />
            <Navbar.Collapse id="basic-navbar-nav">
                <Nav className="ml-auto">
                    {links}
                </Nav>
            </Navbar.Collapse>
        </Navbar>
    );

}

我确实尝试将to 属性设置为to={link.path}to="/about",但都没有成功。

我只是将这个组件放在我的主应用程序组件中,如下所示:

render() {
    return(
        <Router>
            <Container className="p-0" fluid={true}>
                <Header links={this.state.headerLinks} />
                <Route path="/" exact render={() => <Home title={this.state.home.title} subTitle={this.state.home.subTitle} />} />
                <Route path="/about" render={() => <About title={this.state.about.title} />} />
                <Footer />
            </Container>
        </Router>
    );
}

【问题讨论】:

  • 链接组件未将链接呈现为可点击按钮...可能this.state.headerLinks 为空?

标签: javascript reactjs


【解决方案1】:

我看到你有标题组件和一些应用程序组件 但是在您的应用程序组件中,您显示 &lt;Gbar /&gt; 而不显示 &lt;Header /&gt; 解决此问题的最佳方法:

Header

const Header = props => 
    <Navbar className="border-bottom" bg="transparent" expand="lg">
        <Navbar.Brand href="#home">Garrett Love</Navbar.Brand>
        <Navbar.Toggle className="border-0" aria-controls="basic-navbar-nav" />
        <Navbar.Collapse id="basic-navbar-nav">
            <Nav className="ml-auto">
              {props.links.map(link => <Link to={link.path} key={link.title}>{link.title}</Link>)}
            </Nav>
        </Navbar.Collapse>
    </Navbar>

App:

render() {
  return(
      <Router>
          <Container className="p-0" fluid={true}>
              <Header links={this.state.headerLinks} />
              <Route path="/" exact render={() => <Home title={this.state.home.title} subTitle={this.state.home.subTitle} />} />
              <Route path="/about" render={() => <About title={this.state.about.title} />} />
              <Footer />
          </Container>
      </Router>
  );
}

【讨论】:

  • 抱歉,我一定忽略了这一点。它被称为 Gbar,为了这个问题,我打算将其更改为 Header,但它们在我的项目中被正确命名
猜你喜欢
  • 2021-07-25
  • 2016-06-04
  • 2017-08-09
  • 2021-02-02
  • 2019-10-31
  • 1970-01-01
  • 2018-05-29
  • 2020-02-22
  • 2019-06-04
相关资源
最近更新 更多