RsuiteJS中Nav.Item的active属性是什么?如何实现条件激活?
问题解答
1. 正确的active属性名称
你使用的这类侧边栏组件中,Nav.Item的激活属性名称确实是active,但它需要接收布尔类型的值,而非字符串。你之前尝试的{condition ? 'active': ''}传递的是字符串,组件无法识别,所以无效。
2. 条件控制激活的正确方式
方式一:直接绑定布尔条件值
直接将active属性设置为布尔表达式,当条件为true时自动激活,为false时取消激活:
<Nav.Item eventKey="1" active={condition} // 这里condition是你的判断条件,比如当前路径匹配/dashboard icon={<DashboardIcon />} href="/dashboard" > {t('Dashboard')} </Nav.Item>
方式二:使用受控模式(更推荐)
对于带有eventKey的导航组件,更规范的做法是通过父组件Nav的activeKey属性统一控制激活项,能避免单个项设置的冲突:
// 先根据实际场景定义当前激活的key,比如通过路由路径判断 const activeKey = window.location.pathname === '/dashboard' ? '1' : ''; // 渲染Nav时绑定activeKey <Nav activeKey={activeKey}> <Nav.Item eventKey="1" icon={<DashboardIcon />} href="/dashboard" > {t('Dashboard')} </Nav.Item> {/* 其他导航项 */} </Nav>
这种模式下,Nav会自动匹配activeKey对应的Nav.Item并设置激活状态,无需单独给每个项加active属性。
内容的提问来源于stack exchange,提问作者Airborne STD
相关产品推荐
相关产品推荐

