是否可以避免在使用 material-ui 样式的(服务器生成的)页面中重复类定义?
在我的 Next.js / Material-UI 应用程序中,我有一个全局styles.ts
文件,例如:
export const styles = (theme) => createStyles({
myButton: {
'&:hover': { color: '#ff0' },
'&.active': { color: '#f00' },
fontSize: '1.23rem'
}
});
构建后,生成的页面包含使用此样式的每个组件实例的此样式定义的一个“副本”,例如:
<style id="jss-server-side">
.myButton-1 { font-size: 1.23rem; }
.myButton-1:hover { color: #ff0; }
.myButton-1.active { color: #f00; }
.myButton-2 { font-size: 1.23rem; }
.myButton-2:hover { color: #ff0; }
.myButton-2.active { color: #f00; }
...
</style>
我已经使用jss-plugin-global尝试了这种方法,它删除了后缀编号,但仍将副本插入到文件中,例如:
// styles.ts
export const styles = (theme) => createStyles({
'@global': {
'.myButton': {
'&:hover': { color: '#ff0' },
'&.active': { color: '#f00' },
fontSize: '1.23rem'
}
}
}
// output:
<style id="jss-server-side">
.myButton { font-size: 1.23rem; }
.myButton:hover { color: #ff0; }
.myButton.active { color: #f00; }
.myButton { font-size: 1.23rem; }
.myButton:hover { color: #ff0; }
.myButton.active { color: #f00; }
...
</style>