为什么样式化组件保留旧类?

时间:2020-04-01 01:25:44

标签: javascript reactjs styled-components

我最近尝试从Less切换到styled-components。每次重新渲染样式化的组件时,似乎都在文档头中添加了一个新类。

例如,使用以下代码:

const Loop = () => {
  const [opacity, setOpacity] = useState(100);
  useEffect(() => {
    const id = setInterval(() => setOpacity(opacity => opacity - 1), 1000);
    return () => clearInterval(id);
  }, []);
  return <Test opacity={opacity} />;
};

const Test = styled.div`
  height: 40px;
  width: 40px;
  background: black;
  opacity: ${props => props.opacity / 100};
`;

render(<Loop />, document.getElementById("app"));

css内容每秒都在增长:

enter image description here

在我的真实项目中,我有一些大型CSS类,需要经常更新,并且该Web应用程序需要在浏览器中长时间保持打开状态,因此这可能会破坏交易。 我是在做错事还是正常现象?我在文档中找不到任何内容。

1 个答案:

答案 0 :(得分:0)

它是从styled-components生成的dynamic classidentical css string should generate the same class。 (但是重新打开应用程序时会生成不同的类)

也就是说,当再次重新渲染组件时,应该为其重用类,并且不会生成其他类。

this example中,将生成并重用10个类。