代码之家  ›  专栏  ›  技术社区  ›  Elcoosp

生成样式化组件关键帧的函数是否昂贵?

  •  1
  • Elcoosp  · 技术社区  · 7 年前

    在使用样式化组件时,我试图创建一个函数,其中一些输入返回一个css标记的函数,该函数需要一些特定的关键帧(与我的css标记函数紧密耦合)。

    最后,我在函数中定义了关键帧,以访问闭包,并问自己,每次调用函数时重新定义关键帧的成本是否会很高,以及是否有更好的方法来处理这种情况。

    下面是一个片段,它说明了我试图解释的内容,当然,我的问题只适用于比这个更大、更复杂的关键帧:

    const growBorder = (color, from, to) => {
    
      const grow = keyframes`
        from { border: ${from} solid ${color}; }
        to { border: ${to} solid ${color}; }
      `
    
      return css`
        border: ${from} solid ${color};
        animate: ${grow} 3s linear 1s infinite alternate;
    `
    }
    
    
    
    const Button = styled.button`
      ${growBorder('purple', '1px', '3px')}
    `
    
    
    const UglyButton = styled.button`
      ${growBorder('red', '10px', '30px')}
    `
    
    ...
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Huy Nguyen    7 年前

    答案是肯定的。正在创建 keyframes 像你的一样很贵。

    如果你看看 definition of keyframes 在…内 styled-components ,你每次都可以看到 样式化组件 查看 关键帧 helper,它对 关键帧 公告如果未找到匹配项(如动态 关键帧 它将向文档的样式表中注入一个新的样式规则,强制进行全局回流。