javascript - 在 React 中设置单个子组件的样式

标签 javascript css reactjs styled-components

我有一个父 ButtonGroup 组件,它接受像 this.props.children 这样的子组件。我传递给它的子项是呈现单个按钮的 btnItem 组件。我们可以根据需要添加任意数量的按钮。

//ButtonGroup Component

render() {
  return (
    <div>
      {this.props.children}
    </div>
  )
}

//buttonItem component: 

render() {
  return (
    <button disabled={this.props.disabled}>{this.props.caption}</button>
  )
}

//final render
<ButtonGroupComponent>
  <buttonItem caption="Nothing"/>
  <buttonItem caption="Something" disabled={true}/>
  <buttonItem caption="Refresh"/>
</ButtonGroupComponent>

enter image description here

^ 这就是我从上面的代码中得到的。

我想要实现的是一种为第一个和最后一个元素设置边框半径样式的方法,使它们具有 flex 的边框。这必须是动态的,因为此样式将取决于我们渲染的子元素 buttonItem 的数量。

我还应该提到,我正在为每个按钮的 css 使用样式化组件。

最佳答案

你可以在这里使用 first 和 last 子 css 伪选择器。在您的组件中编写以下代码。

const ButtonGroupComponent= styled.div`
     button:first-child {
         border-top-left-radius: 3px;
         border-bottom-left-radius: 3px;
     }
     button:last-child {
         border-top-right-radius: 3px;
         border-bottom-right-radius: 3px;
     }
 `;

像这样渲染函数

<ButtonGroupComponent>
  <buttonItem caption="Nothing"/>
  <buttonItem caption="Something" disabled={true}/>
  <buttonItem caption="Refresh"/>
</ButtonGroupComponent>

看看这个demo

关于javascript - 在 React 中设置单个子组件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033942/

相关文章:

css - 谜: React + Radium: 2 Phanton Pixels of extra height for no apparent reason

reactjs - 我的 react 组件中的导入做错了什么?

javascript - knockout js 订阅选择列表所选选项反复显示未定义

javascript - SharePoint 返回顶部 : not able to add class on page scroll

html - Outlook 破坏响应式电子邮件布局

javascript - React 将对象数组传递给使用不同键的组件

javascript - 具有最接近方法的 dojoquery 在 Internet Explorer 中不起作用

javascript - 使用 onchange 显示图像的名称 ="readURL(this);"

javascript - 如何将日期与当前日期进行比较以应用逻辑

css - 如何在 Polymer 组件中使用 Sass