UI的某些部分通常会与UI的其余部分形成对比色。例如,各种类型的帧组件通常是反向视频"从某种意义上说。
如果有一种方法可以在组件(如导航栏或框架标题)上指定一个适用于其所有子项的子主题,那就太好了。这是可行的吗?
这会与少数情况(特别是AppBar)发生冲突,这些情况会自行扭转颜色。
如果没有,FWIW,我使用HOC来应用样式(Typescript,未经过彻底测试):
import {Toolbar} from 'material-ui/Toolbar'
const reverseStyle = {
backgroundColor: palette.frameBackground,
color: palette.frameForeground,
}
type MetaComponent<P> = React.ComponentClass<P> | React.StatelessComponent<P>
function reverse
<P extends {style?:React.CSSProperties}>
(Comp: MetaComponent<P>)
: React.StatelessComponent<P>
{
return (props:P) => {
const { style, ...other } = props as any
return (<Comp style={{...reverseStyle,...style}} {...other}/>
)
}
}
export const ReverseToolbar = reverse(Toolbar)
//...etc...