小编典典

将鼠标悬停在另一个样式化的组件上

reactjs

处理样式化组件中悬停的最佳方法是什么?我有一个包装元素,将鼠标悬停时会显示一个按钮。

我可以在组件上实现某些状态并在悬停时切换属性,但想知道是否有更好的方法可以使用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;
    }
  }
`

阅读 234

收藏
2020-07-22

共1个答案

小编典典

从样式组件v2开始,您可以插值其他样式组件以引用其自动生成的类名。在您的情况下,您可能需要执行以下操作:

const Wrapper = styled.div`
  &:hover ${Button} {
    display: none;
  }
`

有关更多信息,请参见文档

组件的顺序很重要。只有在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的直接升级,因此我建议您进行更新,但是如果不在此范围内,这是一个很好的解决方法。

2020-07-22