如果将Media的backgroundColour设置为“ red”,我想将redShadowMediaStyle应用于Media。有人知道我该怎么做吗?

使用Media的React组件:

<Media
  backgroundColour={"red"}
/>


媒体成分:

 import mediaStyle from "assets/jss/material-kit-pro-react/components/mediaStyle.jsx";
 import redShadowMediaStyle from "assets/jss/material-kit-pro-react/components/suited/redShadowMediaStyle.jsx";

class Media extends React.Component {
  render() {
    const {
      backgroundColour
    } = this.props;
    return (
      <div>
        {/* content */}
      </div>
    );
  }
}

export default ((props.backgroundColour === "red")
  ? withStyles(redShadowMediaStyle)(Media)
  : withStyles(mediaStyle)(Media));


我认为问题在于导出默认表达式无法访问Media类中的backgroundcolour。

最佳答案

您已经很接近了,只需要一个插页式组件,就可以根据backgroundColour道具的当前值进行逻辑处理。尝试类似的东西:

export default function MediaWrapper({ backgroundColour }) {
    if (backgroundColour === "red") {
        return withStyles(redShadowMediaStyle)(Media)
    }
    return withStyles(mediaStyle)(Media));
}

08-08 05:16