我在试用React路由器(v4),我在启动导航时遇到问题,无法将其中一个Link
设置为active
。如果我单击任何Link
标记,则活动的内容开始工作。但是,我希望Home Link
在应用程序启动后立即处于活动状态,因为这是在/
路径加载的组件。有什么方法可以做到吗?
下面是我目前的代码:
const Router = () => (
<BrowserRouter>
<div>
<Nav>
<Link activeClassName='is-active' to='/'>Home</Link> {/* I want this to start off as active */}
<Link activeClassName='is-active' to='/about'>About</Link>
</Nav>
<Match pattern='/' exactly component={Home} />
<Match pattern='/about' exactly component={About} />
<Miss component={NoMatch} />
</div>
</BrowserRouter>
)
7条答案
按热度按时间nukf8bse1#
<Link>
不再具有activeClassName
或activeStyle
属性。在react-router v4中,如果要执行条件样式,则必须使用<NavLink>
:我添加了一个确切的属性到主页
<NavLink>
,我相当肯定,如果没有它,主页链接将始终处于活动状态,因为/
将匹配/about
和任何其他页面。js4nwp542#
来源:Active NavLink Classes with React Router
现在你可以使用
className
属性,它现在接受一个函数并传递一个isActive
布尔属性,如下所示:您还可以添加多个类,因为v6已过时:
实时演示:Active NavLink Classes with React Router
nnvyjq4y3#
对于
React router V6
,只要路径与给定的to
路径匹配,上述自定义组件将返回一个navlink,该navlink可以激活活动类。oprakyz74#
在
react-router-dom Version 5.3.0
中,我使用了以下代码来启用活动链接班级:
导航链接.js
ippsafx75#
作为@Nick答案(React Router v6)的补充,对于需要上层上下文中的活动导航状态的用户..
条件渲染可能是一个需要的用例。例如:如果它是活动的,则渲染填充图标,否则渲染常规图标。
这可以通过找到我们当前所在的路线来实现,然后我们可以进行条件渲染操作,但这会有点麻烦。
相反,我们可以编写一个函数来修改
Navlink
的样式属性中的状态,如下所示。pw9qyyiw6#
在我的示例中,
<NavLink />
自动将active
类设置为items,因此我使用以下方法我的组件js
我的样式.css
r6hnlfcb7#
受@Live Software Developer的启发,在v6中,我相信这样做要简单得多(下面的输入来自TypeScript):