我有一个反应16应用程序,并希望允许用户改变整个应用程序的主题(包括所有路线)按下一个按钮。
例如,我可以在SCSS中有两个主题:
.theme-1 {
background-color: $bg-color-1;
color: $color-1;
}
.theme-2 {
background-color: $bg-color-2;
color: $color-2;
}然后我有一个按钮,如下所示:
<Button onClick={ this.changeTheme() }这能办到吗?具体来说,我想弄清楚这两部分:
background-color和color的所有组件上设置主题。changeTheme()函数的逻辑。它将如何触发对所有受影响组件的重呈现。谢谢!
发布于 2018-09-10 16:53:50
最好的方法是使用css变量。
您需要使用css变量指定主题,并在某些用户操作中在站点中添加额外的css。
或者另一个变体
theme.css文件
-bg-颜色:黄色;-颜色:绿色;这样做可以避免大量的代码重复。因为你不需要创建多个主题。您只需在更改时添加少量的额外css,就可以创建许多主题,甚至让用户自定义它们。
https://stackoverflow.com/questions/52261260
复制相似问题