我想知道是否可以在没有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>
)
}
您可以像这样有条件地渲染左或右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>
)
}