Tai*_*ara 2 javascript css reactjs material-ui styled-components
我还是 ui-material 的初学者。我想用styled-component.
问题是根据按钮变体覆盖 css,例如,如果它是primaryor secondary:
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 吗?
先感谢您。
看起来在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
| 归档时间: |
|
| 查看次数: |
15524 次 |
| 最近记录: |