我正在创建一个包含样式化组件和React的菜单,并希望图标的颜色在悬停时更改,但我需要它在图标的父项悬停时更改,以便将文本悬停在图标旁边也会激活图标的悬停样式。下面是我用来接近的代码:
import React from 'react';
import styled from 'styled-components';
import { Link } from 'react-router-dom';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
const Menu = styled.div`
display: flex;
flex-direction: column;
`;
const LinkContainer = styled.div`
display: flex;
flex-direction: row;
`;
const FontAwesomeIconExtended = styled.div`
flex: 1;
display: grid;
place-items: center;
height: 40px;
width: 40px;
padding: 10px 2px;
border-radius: 10px;
transition: color 0.5s ease;
color: ${(props) => (props.$isactive ? '#fff' : '#CBE3EB')};
background: ${(props) =>
props.$isactive
? 'linear-gradient(96.34deg, #004157 0%, #0090b2 100%)'
: '#fff'};
${LinkContainer}:hover & {
color: ${(props) => (props.$isactive ? '#fff' : 'green')};
} /* Problem occurring here */
`;
const LinkText = styled.div`
flex: 1 0 100px;
`;
function NavLink({ ...props }) {
return (
<Link to={props.path}>
<LinkContainer $isactive={props.$isactive}>
<FontAwesomeIconExtended
$isactive={props.$isactive}
icon={props.icon}
size='2x'
as={FontAwesomeIcon}
/>
<LinkText $isactive={props.$isactive}>{props.name}</LinkText>
</LinkContainer>
</Link>
);
}
export default function NavMenu() {
return (
<Menu>
<NavLink path='/' name='Home' icon='house' $isactive />
<NavLink path='/profile' name='Profile' icon='user' />
<NavLink path='/payments' name='Payments' icon='credit-card-front' />
<NavLink path='/contracts' name='Contracts' icon='file-contract' />
<NavLink path='/messages' name='Messages' icon='mail-bulk' />
<NavLink path='/messages' name='Documents' icon='folders' />
<NavLink path='/locations' name='Transfer' icon='truck-moving' />
</Menu>
);
}
在以后的组件中引用另一个样式化组件的方式非常聪明,但在本例中,当它创建悬停规则时,它创建时不考虑不同类型的父容器($isactive===true或$isactive==false),因此所有链接容器都有两个悬停规则,并使用最后定义的规则。这可以通过将$isactive移动到最后一个NavLink组件看到。
这里是devtools的屏幕截图,显示了我所说的两个悬停规则的含义,没有考虑父类,只是父类的一般类型。
我认为解决方案可能涉及在创建悬停规则时对LinkContainer的两种类型的类名进行具体说明,但这似乎不受很好的支持。谢谢你看一下。
通过重复类名,使用另一个“
${LinkContainer}:hover && {
问题内容: 处理样式化组件中悬停的最佳方法是什么?我有一个包装元素,将鼠标悬停时会显示一个按钮。 我可以在组件上实现某些状态并在悬停时切换属性,但想知道是否有更好的方法可以使用styled-cmponents来做到这一点。 像下面这样的东西不起作用,但是很理想: 问题答案: 从样式组件v2开始,您可以插值其他样式组件以引用其自动生成的类名。在您的情况下,您可能需要执行以下操作: 有关更多信息,请参
处理样式组件中悬停的最佳方法是什么?我有一个包装元素,当悬停时会显示一个按钮。 我可以在组件上实现一些状态,并在悬停状态下切换属性,但我想知道是否有更好的方法使用样式化的cmponents来实现这一点。 类似于以下内容的内容不起作用,但非常理想:
在按钮悬停我想做的改变:之前的内容太,我找不到一个答案在官方留档我想知道这是可能的。 这里是样式组件:
我正在开发一个带有样式组件的反应应用程序,我有一个组件“导航”。在这个组件中有更多的组件,如,等。Header例如是这样声明的: 问题是,我在不同的文件中有这个导航组件,对于所有文件,样式都很好,但现在我只想在其中一个文件中更改标题组件的背景色,它位于(?)导航组件。我该怎么做?我知道可以用const NewNav=styled(导航)之类的东西从导航组件更改样式,`但是标题呢? 先谢谢你。
我有一个问题,试图测试与样式组件制成的组件。 因此,我有两个组件,如果我将鼠标悬停在第一个元素上,我试图改变第二个组件的背景色。 我的组件: 每当我尝试用jest它总是抛出一个错误,表示。但是,当我在标签中注释对容器组件的引用时,测试通过了。有人能帮忙吗?非常感谢你。 我正在使用react测试库在测试文件中呈现组件。
我知道我们在函数组件中使用history.push(),并对重定向路由做出反应。但是在类组件中,我们如何在点击按钮时重定向