处理样式化组件中悬停的最佳方法是什么?我有一个包装元素,将鼠标悬停时会显示一个按钮。
我可以在组件上实现某些状态并在悬停时切换属性,但想知道是否有更好的方法可以使用styled-cmponents来做到这一点。
像下面这样的东西不起作用,但是很理想:
const Wrapper = styled.div` border-radius: 0.25rem; overflow: hidden; box-shadow: 0 3px 10px -3px rgba(0, 0, 0, 0.25); &:not(:last-child) { margin-bottom: 2rem; } &:hover { .button { display: none; } } `
从样式组件v2开始,您可以插值其他样式组件以引用其自动生成的类名。在您的情况下,您可能需要执行以下操作:
const Wrapper = styled.div` &:hover ${Button} { display: none; } `
有关更多信息,请参见文档!
组件的顺序很重要。只有在Button上面/之前定义时,它才有效Wrapper。
Button
Wrapper
如果您使用的是v1,并且需要执行此操作,则可以使用自定义的类名来解决此问题:
const Wrapper = styled.div` &:hover .my__unique__button__class-asdf123 { display: none; } ` <Wrapper> <Button className="my__unique__button__class-asdf123" /> </Wrapper>
由于v2是v1的直接升级,因此我建议您进行更新,但是如果不在此范围内,这是一个很好的解决方法。