【发布时间】:2021-09-15 18:35:27
【问题描述】:
我还是 ui-material 的初学者。我想用styled-component 自定义我自己的按钮组件。
问题是根据按钮变化覆盖css,例如如果它是primary或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;
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;
你能告诉我如何让我的样式覆盖 ui 材质吗?
提前谢谢你。
【问题讨论】:
-
sn-ps 不运行是没有用的。你能创建一个运行的代码框吗?
-
嗨,克里斯,对不起,我用代码框更新了我的代码
-
@Tainara 这里是您尝试创建自定义组件的有效方式 [codesandbox.io/s/material-ui-with-styled-components-e9fr5?file=/…。您需要增加特异性以使样式与材质 ui 组件一起使用。正如 Chris 提到的,[material-ui.com/guides/interoperability/… UI 网站有一个很好的例子。
-
嗨 Junaid,这对我有用,谢谢
-
Material UI docs 有一些关于如何使用不同方法自定义组件的示例。
标签: javascript css reactjs material-ui styled-components