reactjs - React 三元运算符防止使用样式化组件重复代码?
问题描述
所以我使用了样式化的组件,发现触发我的函数的唯一方法是使用一个包含整个导航栏组件的三元运算符。问题是我必须将整个组件代码重新复制到:
语句中,这基本上意味着我要编写两次导航组件代码,只是为了让三元组正常工作。
有没有办法不重复,用最少的代码写三进制?
所以这是我的代码问题
return (
<>
// If scroll is true, I want to add this active prop onto my <Nav>
{scroll ? (
<Nav active click={click}>
<NavbarContainer>
<NavLogo to="/" onClick={closeMobileMenu}>
<NavIcon />
EXPLOR
</NavLogo>
<MobileIcon onClick={handleClick}>
{click ? <FaTimes /> : <FaBars />}
</MobileIcon>
<NavMenu onClick={handleClick} click={click}>
<NavItem>
<NavLinks to="/">Home</NavLinks>
</NavItem>
<NavItem>
<NavLinks to="/images">Images</NavLinks>
</NavItem>
<NavItem>
<NavLinks to="/products">Products</NavLinks>
</NavItem>
</Nav>
:
// If the scroll is false, I remove the active prop from my nav
(
<Nav click={click}>
<NavbarContainer>
<NavLogo to="/" onClick={closeMobileMenu}>
<NavIcon />
EXPLOR
</NavLogo>
<MobileIcon onClick={handleClick}>
{click ? <FaTimes /> : <FaBars />}
</MobileIcon>
<NavMenu onClick={handleClick} click={click}>
<NavItem>
<NavLinks to="/">Home</NavLinks>
</NavItem>
<NavItem>
<NavLinks to="/images">Images</NavLinks>
</NavItem>
<NavItem>
<NavLinks to="/products">Products</NavLinks>
</NavItem>
</Nav>
}
</>
重点是我可以从我的样式组件触发这个活动道具
background: ${({ active }) => (active ? "#141414" : "transparent")};
但是正如你所看到的,我不得不复制我的整个组件代码两次,因为<Nav>
具有 active 属性的那个包裹了我的整个代码。
有没有更简单的方法来切换带有样式组件的活动道具,而不必在:
or 语句中重新复制我的整个导航栏?
解决方案
假设 active 是一个布尔值,您可以像这样简单地设置 active={scroll }
<Nav active={scroll} click={click}>
.....
</Nav>
推荐阅读
- python-3.x - grouby 对象的形状及其转换后的数据框对象
- python - 如何在python中使用pynput输出每次按下空格键之间的时间
- php - 使用由 for 或 foreach 循环完成的关联数组创建 wordpress 更新查询
- flutter - Flutter - 模拟器使用 SMTP 发送电子邮件,电话不发送
- amazon-web-services - AWS 实例的 HTTP 主机标头中的显式端口号
- ios - xCode OSx:错误:EMFILE:打开的文件太多,请观看
- javascript - 遍历数组并复制以html形式选择的元素
- odoo - 如何隐藏树视图上的操作按钮?
- xml - VB.NET 无法将字符串写入根节点
- c - 将所有 C 必要的头文件放在一个头文件中是否很好?