如何使用样式组件中发生变化的 类

How to work with classes that change in styled-components

可能有人问过这个问题,但我找不到答案。我是样式组件的新手,但慢慢开始欣赏它们。考虑到 class 名称会动态变化,我正在尝试了解如何获取它们。我正在做的代码是:

样式组件

export const NavOpen = styled.div`
  position: absolute;
  top: 25px;
  left: 30px;
  transition-property: all;
  transition-duration: 0.2s;
  transition-timing-function: linear;
  transition-delay: 0s;
  width: 35px;
  height: 25px;
  overflow: hidden;
  cursor: pointer;
  z-index: 1;
`;

javascript

const slideInWindow = display => {
  if (display) {
    const navWindow = document.querySelector(".sc-ifAKCX");
    navWindow.classList.add("slidein");
  }
};

JSX

<NavOpen onClick={() => slideInWindow(true)}>
  <Bar1 />
  <Bar2 />
  <Bar3 />
  {display && <X onClick={() => closeWindow(false)} />}
</NavOpen>

class .sc-ifAKCX 与以前有所不同。我确定我做错了,但我想了解我应该如何查询 class 如果它会改变我。

您可以为每个样式组件指定一个 class 您选择的名称:

export const NavOpen = styled.div.attrs({
  className: 'slidein-target'
})`
  position: absolute;
  top: 25px;
  left: 30px;
  transition-property: all;
  transition-duration: 0.2s;
  transition-timing-function: linear;
  transition-delay: 0s;
  width: 35px;
  height: 25px;
  overflow: hidden;
  cursor: pointer;
  z-index: 1;
`;

现在每个 NavOpen 实例的 class 列表中都会有 class slidein-target,您可以将其用作查询选择器。

请注意,slidein-target 不会替换生成的 class 名称 sc-XXXXXX,但会出现在它旁边。