如何使用样式组件覆盖material-ui css?

Tai*_*ara 2 javascript css reactjs material-ui styled-components

我还是 ui-material 的初学者。我想用styled-component.

问题是根据按钮变体覆盖 css,例如,如果它是primaryor secondary

这是我在codesandbox.io中的代码

import React from "react";
import PropTypes from "prop-types";

import { CButton } from "./styles";

const CustomButton = ({ children, color }) => {
  return (
    <div>
      <CButton variant="contained" color={color}>
        {children}
      </CButton>
    </div>
  );
};

CustomButton.propTypes = {
  children: PropTypes.node,
  color: PropTypes.oneOf(["primary", "secondary"])
};

export default CustomButton;
Run Code Online (Sandbox Code Playgroud)
import styled, { css } from "styled-components";
import Button from "@material-ui/core/Button";

export const CButton = styled(Button)`
  height: 80px;

  ${({ color }) =>
    color === "primary"
      ? css`
          background-color: green;
        `
      : color === "secondary" &&
        css`
          background-color: yellow;
        `}
`;
Run Code Online (Sandbox Code Playgroud)

import React from "react";

import CustomButton from "./CustomButton";

const App = () => {
  return (
    <div>
      <div
        style={{
          marginBottom: "10px"
        }}
      >
        <CustomButton color="primary">Primary</CustomButton>
      </div>
      <div>
        <CustomButton color="secondary">Secondary</CustomButton>
      </div>
    </div>
  );
};

export default App;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

你能告诉我如何让我的样式覆盖 ui-material 吗?

先感谢您。

Chr*_*mer 6

看起来在material-ui文档中有一个关于如何执行此操作的很好的示例: https://material-ui.com/guides/interoperability/#styled-components

您似乎缺少的一件事是StylesProvider,它允许您的样式覆盖默认的材质样式。这似乎有效......我不处理你的例子中的条件,但我不认为这是你的问题的一部分。

const MyStyledButton = styled(Button)`
  background-color: red;
  color: white;
`;

export default function App() {
  return (
    <StylesProvider injectFirst>
      <div className="App">
        <MyStyledButton color="primary">Foo</MyStyledButton>
      </div>
    </StylesProvider>
  );
}
Run Code Online (Sandbox Code Playgroud)

这是一个codesandbox:https://codesandbox.io/s/infallible-khorana-gnejy