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

标签 javascript html css reactjs router

我想知道是否可以基于 URL 更改导航栏元素,而无需使用 2 个不同的导航栏组件。我的导航栏左侧有 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>
  )
}

最佳答案

您可以像这样有条件地渲染左或右 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>
  )
}

关于javascript - React JS - 如何根据 URL 路径显示/隐藏组件的某些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59866628/

相关文章:

javascript - 从 PHP 渲染 React 组件

javascript - 正确缩放图像但适合 div

html - 直接声明元素的 (min-/max-)width/height 或使用 100% 并从外部继承

javascript - 如果在 div 中找到值,则按类名更新最接近跨度的值

html - 在居中 Div 内左对齐

javascript - JQuery 忙碌指示器不会禁用键盘事件

javascript - 单击按钮时不显示对话框

javascript - Sequelize 无法创建表,但是当我在 MySQL CLI 中运行它时它可以工作

javascript - 布料设计师。层的着色

css - 背景顶部菜单 css 颜色