Material UI (React)使用主题解决方案,在JS中创建主题对象,然后将其传递到顶级组件。在Opal中创建主题对象可能很复杂,因为Material组件需要传入一个JS函数,该函数实际动态创建主题。
有没有人举了一个运行良好的例子?
发布于 2019-04-07 13:01:08
经过一些实验,我通过混合JS和Opal代码让它工作得很好,所以这是一个解决方案,以防其他人提出这个问题。(可能有一个更好的'more Opal‘解决方案,所以如果有的话,请发布一个替代的答案,但下面的一个确实很有效。
首先和webpack一起导入JS库:
import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';
import indigo from '@material-ui/core/colors/indigo';
import pink from '@material-ui/core/colors/pink';
import red from '@material-ui/core/colors/red';
global.createMuiTheme = createMuiTheme;
global.MuiThemeProvider = MuiThemeProvider;
global.indigo = indigo;
global.pink = pink;
global.red = red;将以下内容添加到Javascript资源中:
// app/assets/javascripts/my_theme.js
const my_theme = createMuiTheme(
{ palette: {
primary: { main: pink[500] },
secondary: { main: indigo[500] }
}
});然后在您的顶级组件代码中提供主题:
class MyRouter < HyperComponent
include Hyperstack::Router
render(DIV) do
MuiThemeProvider(theme: `my_theme` ) do
CssBaseline do
...
end
end
end
endhttps://stackoverflow.com/questions/55555755
复制相似问题