gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:10:05 26 4
gpt4 key购买 nike

我仍然是 ui-material 的初学者。我想使用 styled-component 自定义我自己的按钮组件。

问题是根据按钮的变化来覆盖 css,例如,如果它是 primarysecondary:

这是我的代码 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;
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;
`}
`;

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;

enter image description here

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

提前谢谢你。

最佳答案

看起来在 material-ui 文档中有一个很好的例子说明如何做到这一点:https://material-ui.com/guides/interoperability/#styled-components

您似乎缺少的一件事是 StylesProvider,它允许您的样式覆盖默认 Material 样式。这似乎可行...我没有处理您示例中的条件,但我认为这不是您问题的一部分。

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>
);
}

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

关于javascript - 如何用样式组件覆盖 material-ui css?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68248337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com