javascript - 如何使用样式化的 MUI 基于道具制作不同的组件变体?
问题描述
我正在尝试使我的组件根据道具看起来不同,例如使用styled
如下函数的“变体”:
import { styled } from '@mui/material/styles';
const RemoveButton = styled(Button)(({ theme }) => ({
backgroundColor: 'lightgreen',
}));
function App() {
return (
<>
<RemoveButton>Remove Button</RemoveButton>
</>
);
}
export default App;
例如,如果我希望我的组件在何时为红色,何时为variant="contained"
蓝色,我该怎么办variant="outlined"
?
解决方案
如果您想根据组件的 props 设置组件样式,请使用styled
:
const RemoveButton = styled(Button)(({ variant }) => ({
...(variant === "contained" && {
backgroundColor: "red"
}),
...(variant === "outlined" && {
backgroundColor: "blue"
})
}));
您还可以使用 创建自己的自定义变体,有关更多详细信息createTheme
,请参阅此答案。
推荐阅读
- swift - 无法将图像保存在正确的目录中
- angular - 如何在角度和打字稿中等待 API 调用完成
- django - wkhtmltopdf (pdfkit) 无法连接到任何 X 显示器
- azure - 如何在 YARN BUILD 之后在 VSTS 中获取 outbuild 构建目录
- r - R writing time intervals using lubridate package in an Excel file using XLConnect
- kubernetes - Kubernetes 网络,无法从另一个网络访问服务节点端口
- python - 搭建开发环境:PyCharm、python-gtk、windows
- android - 使用 rxjava 正确处理所有类型的改造错误
- r - 闪亮应用的 Dockerfile
- python - 使用 PyQt5 将多个 Python 文件转换为 exe