在 Material-UI(现在称为 MUI)中,您可以使用样式钩子(如 makeStyles
或 styled
)来创建动态样式。要将道具动态发送到样式钩子,您可以使用以下方法。
makeStyles
如果您使用的是 makeStyles
,可以通过将道具传递给样式函数来实现动态样式。以下是一个示例:
import React from 'react';
import { makeStyles } from '@mui/styles';
import Button from '@mui/material/Button';
const useStyles = makeStyles((theme) => ({
root: (props) => ({
backgroundColor: props.color || theme.palette.primary.main,
color: theme.palette.common.white,
padding: theme.spacing(1, 2),
'&:hover': {
backgroundColor: props.hoverColor || theme.palette.primary.dark,
},
}),
}));
const DynamicButton = ({ color, hoverColor, children }) => {
const classes = useStyles({ color, hoverColor });
return (
<Button className={classes.root}>
{children}
</Button>
);
};
export default DynamicButton;
makeStyles
和 Material-UI 的组件。useStyles
中,您可以定义一个样式对象,并使用传入的道具(props
)来动态设置样式。例如,您可以根据 color
和 hoverColor
属性来设置按钮的背景色。useStyles
,并将道具传递给它。然后,您可以将生成的类应用于组件。styled
如果您使用的是 styled
API,您可以通过以下方式实现动态样式:
import React from 'react';
import { styled } from '@mui/material/styles';
import Button from '@mui/material/Button';
const DynamicButton = styled(Button)(({ theme, color, hoverColor }) => ({
backgroundColor: color || theme.palette.primary.main,
color: theme.palette.common.white,
padding: theme.spacing(1, 2),
'&:hover': {
backgroundColor: hoverColor || theme.palette.primary.dark,
},
}));
const App = () => {
return (
<DynamicButton color="green" hoverColor="darkgreen">
Dynamic Styled Button
</DynamicButton>
);
};
export default App;
styled
和 Material-UI 的组件。styled
创建一个动态按钮组件。您可以在样式函数中访问 theme
和道具(如 color
和 hoverColor
),并根据这些道具设置样式。DynamicButton
,并传递所需的道具。
领取专属 10元无门槛券
手把手带您无忧上云