css - 使用 styled-components 来设置我自己的 React 组件的样式

标签 css reactjs material-ui styled-components

我正在尝试使用 styled-components 来设置我自己的子组件的样式。

例如,我创建了一个名为 myCard 的自定义卡片组件,如下所示:

import React from "react";
import Card, { CardActions, CardContent } from "material-ui/Card";
import Button from "material-ui/Button";
import Typography from "material-ui/Typography";

const myCard = props => {
  return (
    <Card>
      <CardContent>
        <Typography>{props.cardName}</Typography>
      </CardContent>
      <CardActions>
        <Button size="small">SELECT</Button>
      </CardActions>
    </Card>
  );
};

export default myCard;

现在,在父组件中,我想重用这个 myCard 组件,但可以为它们中的任何一个提供自定义样式,例如边框(当我最终将代码重构为 onClick 时):

import React, { Component } from "react";
import Grid from "material-ui/Grid";
import styled from "styled-components";
import myCard from "./myCard";


const StyledCard = styled(myCard)`
  /* border-style: ${props => (props.border ? "solid" : "none")}; */
  border-style: solid !important;
  border-width: 5px;
  width: 180px;
`;

class cardSelect extends Component {
  render() {
    return (
      <div>
        <Grid container spacing={24}>
          <Grid item xs={12}>
            <Grid container justify="center">
              <Grid item>
                <StyledCard
                  cardName="Bronze"
                />
              </Grid>
              <Grid item>
                <StyledCard
                  cardName="Silver"
                />
              </Grid>
              <Grid item>
                <StyledCard
                  cardName="Gold"
                />
              </Grid>
            </Grid>
          </Grid>
        </Grid>
      </div>
    );
  }
}

export default cardSelect;

我承认,我发现 styled-components 文档相当糟糕。并且只有一个提到这种情况,建议将 className prop 传递给组件。但是我并没有真正理解这个概念。

最佳答案

因此您确实需要将 className 属性传递给 Card 组件。 styled-components 为您生成类,要为 not-styled-components 应用样式,只需将 className prop 传递给组件...

const myCard = props => {
  return (
    <Card className={props.className}>
      <CardContent>
        <Typography>{props.cardName}</Typography>
      </CardContent>
      <CardActions>
        <Button size="small">SELECT</Button>
      </CardActions>
    </Card>
  );
};

关于css - 使用 styled-components 来设置我自己的 React 组件的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49250209/

相关文章:

在 Chrome 中固定定位的 CSS z-index

jquery 工具提示在悬停时闪烁

javascript - 如何仅在特定页面中删除页脚组件?

javascript - Material-UI 数据网格仅呈现 101 行

reactjs - 从输入组件 Material UI 中删除下划线(v1.0 Beta)

javascript - 选择值的变化

html - 文本仅在图像旁边向左浮动一行

reactjs - 动画和 getDerivedStateFromProps

javascript - 如何在 TypeScript 中为图像添加路径别名?

javascript - 收到错误 TypeError : color. charAt is not a function in C :/. ..../node_modules/@material-ui/core/styles/colorManipulator.js:148