减少样式化组件中的重复代码

Reducing Repetitive Code Within Styled-components

我在 React 项目中使用样式组件,想知道是否有办法减少这 3 个重复的块,唯一的区别是边框的颜色。

最初,我想创建一个对象来映射可能的警报值(成功、警告、危险),并添加适当的颜色作为它们的键,但是我不确定该对象放在哪里.


const customStyles = {

  ${({ alert }) =>
    alert === "success" &&
    css`
      border: 1px solid green;
  `}

  ${({ alert }) =>
    alert === "warning" &&
    css`
      border: 1px solid orange;
  `}

  ${({ alert }) =>
    alert === "danger" &&
    css`
      border: 1px solid red;
  `}

}

const Input = styled.input`
  ${customStyles}
`;

你可以重复使用 returns 基于值的正确颜色的函数怎么样?

像这样:

function getAlertColor(alert){
  switch (alert) {
    case "success":
      return "green"
    case "warning":
      return "orange"
    case "danger":
      return "red"
  }
}

const Input = styled.input`
  border: ${props => `1px solid ${getAlertColor(props.alert)};`};
`;