我的应用程序的逻辑和操作方面是不可触及的,所以我不能去挖掘组件从<FriendlyComponentName />
到<div css={{styleObject}} />
通过材料makeStyles()
或什么的变化。
现有样式组件示例:
PageNav: styled.div`
width: 1440px;
`,
我从材料withStyles()
开始维护组件名称:
PageNav: withStyles({
root: {
width: "1440px",
},
})(div)
…除此之外,正如您在第二块的最后一行所看到的,材料不知道如何处理div
和错误。材料部件(Typography
等)按预期工作
我试着放在那里的东西:
- 样式组件
styled.div
- 材料
styled("div")
- 只是普通
(div)
和("div")
- 在
root:{}
之外提升样式定义1级
目标是用材质UI定义替换样式组件定义,同时保持现有名称(如上面的PageNav
)。
是可能的样式HTML组件像这样使用材料UI?
下面是用材质UI定义替换了样式组件定义的代码片段。它还包括一个重新定义CSS属性的例子,如果你决定在重用的时候稍微调整一下你的组件…
import "./styles.css";
import { withStyles, createStyles, makeStyles } from "@material-ui/core/styles";
const PageNav = withStyles({
root: {
width: "1440px",
height: "80px",
margin: "0 auto",
color: "tomato", // default color
padding: "24px 140px 24px 60px",
backgroundColor: "white",
boxSizing: "border-box",
display: "flex",
justifyContent: "space-between"
}
})(({ classes, children }) => <div className={classes.root}>{children}</div>);
const useStyles = makeStyles((theme) =>
createStyles({
root: {
color: "blue" // redefined color
}
})
);
export default function App() {
const classes = useStyles()
return (
<PageNav classes={{ root: classes.root }}>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</PageNav>
);
}
代码片段的实例可以在这里找到。
你试过这样设置样式吗?基本上,您可以通过useStyles
为任何元素创建样式,然后您可以简单地在代码中使用创建的样式。