作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两种风格。
在 global.ts 中
const globalStyles = (theme: Theme) => {
return {
g: {
marginRight: theme.spacing(40),
},
}
}
export const mergedStyle = (params: any) => makeStyles((theme: Theme) =>
createStyles({
...globalStyles,
...params
}),
);
在 App.tsx 中
import * as Global from './global';
const localStyles = (theme: Theme) => {
return {
l: {
marginRight: theme.spacing(20),
},
}
}
export default function DenseAppBar() {
const classes = Global.mergedStyle(localStyles)();
return (
<div>
<MenuIcon className={classes.l} />
<MenuIcon className={classes.g} />
<MenuIcon />
</div>
);
}
没有任何编译错误,但是不起作用。我应该如何修改我的代码?
我添加了codesandbox。
最佳答案
使用通用的makeStyles
生成spread_syntax的内部内容就可以了。
const style1 = (theme) => {
return {
a: {
marginRight: theme.spacing(1),
}
}
}
const style2 = (theme) => {
return {
b: {
marginRight: theme.spacing(2),
}
}
}
const mergedStyle = makeStyles((theme: Theme) =>
createStyles({
...style1(theme),
...style2(theme),
}),
);
使用
export default function MyComponent() {
const classes = mergedStyle();
return (
<>
<div className={classes.a}></div>
<div className={classes.b}></div>
</>
)
}
在线尝试:
<小时/>如果你想在mergeStyle
函数中传递参数
const mergedStyle = (params) =>makeStyles((theme: Theme) =>
createStyles({
...
}),
);
使用
const classes = mergedStyle(params)();
<小时/>
关于javascript - Material-UI,如何在 typescript 中将多种样式与主题合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60720472/
我是一名优秀的程序员,十分优秀!