首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建新组件并从样式化组件继承样式

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

Stack Overflow用户
提问于 2019-04-30 16:28:09
回答 2查看 10.2K关注 0票数 19
代码语言:javascript
复制
const Button = styled.button`
  display: inline-block;
  width: 300px;
  background-color: black;
`    

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

所以我有两个样式化的组件。我想继承“Button”样式,但创建另一个标签。我使用react-emotion。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2019-05-16 16:25:11

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

1.使用组合

代码语言:javascript
复制
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样式。

或者..。

代码语言:javascript
复制
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.使用样式化组件

代码语言:javascript
复制
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属性的组件,button就是这样做的。

3.使用 props

代码语言:javascript
复制
  const Button = styled.button`
    color: white;
    background-color: ${props => props.fancy ? 'red' : 'black'};
  `

  render() {
    return (
      <div>
        <Button>Button</Button>
        <Button fancy>Fancy</Button>
      </div>
    )
  )
票数 27
EN

Stack Overflow用户

发布于 2020-09-05 13:34:12

如果您只想要一个具有与Button完全相同的样式的a,那么可以使用<Button as=“a” />

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55916786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档