React JS-如何基于URL路径显示/隐藏组件的某些部分?

问题描述 投票:0回答:1

我想知道是否可以在没有2个不同导航栏组件的情况下更改导航栏项基于URL。我的导航栏在左侧有3个链接,在右侧有3个链接,但是我想一次在每一侧显示一次。

例如:当我在/page-1, /page-2, /page-3上时,我只想显示左侧,而当我在/page-4, /page-5, /page-6上时,我只想显示右侧。我尝试了match.params,但没有运气。我该如何实现?对不起,我的英语

Layout.js

...

export default class Layout extends Component {
  render() {
    return (
      <div>
        <Route path="/:name" component={Navbar} />
        <SomeContentComponent />
      </div>
    );
  }
}

Navbar.js

const Navbar = ({ match }) => {

  const page = match.params.name

  return (
    <div>
      <ul className="left">
        <li><Link to="/page-1">Page 1</Link></li>
        <li><Link to="/page-2">Page 2</Link></li>
        <li><Link to="/page-3">Page 3</Link></li>
      </ul>
      <ul className="right">
        <li><Link to="/page-4">Page 4</Link></li>
        <li><Link to="/page-5">Page 5</Link></li>
        <li><Link to="/page-6">Page 6</Link></li>
      </ul>
    </div>
  )
}
javascript html css reactjs router
1个回答
0
投票

您可以像这样有条件地渲染左或右div

const Navbar = ({ match }) => {

  const { url } = match;
  const showLeft = ['/page-1', '/page-2', '/page-3'].indexOf(url) > -1;

  return (
    <div>
      {showLeft && (<ul className="left">
        <li><Link to="/page-1">Page 1</Link></li>
        <li><Link to="/page-2">Page 2</Link></li>
        <li><Link to="/page-3">Page 3</Link></li>
      </ul>
      )}
      (!showLeft && (
      <ul className="right">
        <li><Link to="/page-4">Page 4</Link></li>
        <li><Link to="/page-5">Page 5</Link></li>
        <li><Link to="/page-6">Page 6</Link></li>
      </ul>
      )}
    </div>
  )
}
© www.soinside.com 2019 - 2024. All rights reserved.