Yah*_*tzi 13 css reactjs material-ui
我想将样式与 MUI v5 中的组件文件分开。我在 v4 中的做法是makeStyles这样的:
Page.style.js:
import { makeStyles } from "@material-ui/core";
export const useStyles = makeStyles({
root: {
background: "white",
},
});
Run Code Online (Sandbox Code Playgroud)
Page.js:
import React from "react";
import useStyles from "./Page.style";
const Page = () => {
const classes = useStyles();
return (
<div className={classes.root}></div>
)
}
Run Code Online (Sandbox Code Playgroud)
makeStyles现在是遗产,我听说它将在下一个版本中被弃用。在 v5 中将样式和组件分离到不同文件中的正确方法是什么?
Nea*_*arl 15
v5 中推荐的样式 API 是styled()/ sxprop。如果使用styled,则可以通过创建可重用的样式组件来分离样式代码。该sxprop 更适合内联一次性样式,因此它不是在这种情况下使用的最佳选择:
const Div = styled('div')({
background: "white",
});
export Div;
Run Code Online (Sandbox Code Playgroud)
import React from "react";
import { Div } from "./Div";
const Page = () => {
return (
<Div />
)
}
Run Code Online (Sandbox Code Playgroud)
除此之外,您还可以使用MUI v5 中的变体。它的工作方式是创建一个自定义样式并为其分配一个名为“variant”的名称,因此您不必像以前那样指定 className,而是可以variant像这样设置 prop:
<Button variant="myCustomVariant">
Button
</Button>
Run Code Online (Sandbox Code Playgroud)
可以使用创建自定义变体createTheme。有关更多详细信息,请参阅此答案。请注意,目前并非所有组件都支持此功能:
const theme = createTheme({
components: {
MuiButton: {
variants: [
{
props: { variant: 'myCustomVariant' },
style: {
textTransform: 'none',
border: `2px dashed grey${blue[500]}`,
},
},
],
},
},
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11929 次 |
| 最近记录: |