创建新组件并从样式组件继承样式

时间:2019-04-30 08:28:09

标签: javascript styled-components emotion

const Button = styled.button`
  display: inline-block;
  width: 300px;
  background-color: black;
`    

const ButtonHref = styled.a`
  ${Button}
`   

所以我有两个样式化的组件。我想继承“按钮”样式,但创建另一个标签。我使用反应情绪。我该怎么办?

2 个答案:

答案 0 :(得分:1)

这里有一些选项,可以使用合成,样式化的组件或道具。第二个选项可能是您想要的,但是我也提供了另外两个选项。

1。使用合成

const baseButton = css`
  color: white;
  background-color: black;
`

const fancyButton = css`
  background-color: red;
`

render() {

  return (
    <div>
      <button css={baseButton}></button>
     <button css={[baseButton, fancyButton]}></button>
    </div>
  )
}

第二个按钮将具有baseButtonspecialButton样式。

或者...

const baseButton = css`
 color: white;
 background-color: black;
`

const fancyButton = css`
 ${baseButton};
 background-color: red;
`

render() {
 return (
   <div>
     <button css={baseButton}></button>
     <button css={fancyButton}></button>
   </div>
 )
}

2。使用样式化的组件

const Button = styled.button`
  color: white;
  background-color: black;
`
const Fancy = styled(Button)`
  background-color: red;
`

render() {
  return (
    <div>
      <Button>Button</Button>
      <Fancy>Fancy</Fancy>
    </div>
  )
}

这适用于接受className的{​​{1}}道具的任何组件。

3。使用button

props

答案 1 :(得分:1)

如果您只想要一种a样式与您的Button完全相同的样式,则可以进行<Button as=“a” />