在组件的渲染函数中使用 Material-UI muiThemeable?

Using Material-UI muiThemeable within the render function of a component?

我目前正在为我的 Web 应用程序使用 material-ui,我想为其添加主题,因此我使用它附带的 MuiThemeProvider 来为其设置主题。

该文档包含 instructions 关于如何使用带有主题的自定义组件,但遗憾的是缺少关于如何在渲染函数中使用它的说明。

例如,他们使用的代码是:

import React from 'react';
import muiThemeable from 'material-ui/styles/muiThemeable';

const DeepDownTheTree = (props) => (
  <span style={{color: props.muiTheme.palette.textColor}}>
    Hello World!
  </span>
);

export default muiThemeable()(DeepDownTheTree);

这很好,但是如果你需要渲染功能,这就不行了。我将如何实现类似的目标? (这行不通,只是一个例子):

import React from 'react';
import muiThemeable from 'material-ui/styles/muiThemeable';

class MyComponent extends React.Component{
  render(){
    return muiThemeable()(
      <span style={{color: props.muiTheme.palette.textColor}}>
        Hello World!
      </span>
    )
  }
}

export default muiThemeable()(DeepDownTheTree);

这对我的应用程序至关重要,因为我在返回最终 DOM 之前在渲染函数中操作 DOM 的位。

初始无状态组件的等效有状态组件是

import React from 'react';
import muiThemeable from 'material-ui/styles/muiThemeable';

class MyComponent extends React.Component{
  render(){
    return (
      <span style={{color: this.props.muiTheme.palette.textColor}}>
        Hello World!
      </span>
    )
  }
}

export default muiThemeable()(DeepDownTheTree);

请注意,您在整个组件上使用高阶函数(即 muiThemable()),而不仅仅是从渲染函数返回的内容。