我想知道是否可以基于 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/