【问题标题】:Using MuiThemeProvider tag for material ui with react将 MuiThemeProvider 标签用于带有反应的材料 ui
【发布时间】:2017-08-20 04:19:11
【问题描述】:

我从使用演示应用程序的材料 ui 的简单反应组件开始,如下所述: https://www.npmjs.com/package/material-ui 我有以下问题

  1. 我们是否需要为每个和 evert材质ui组件?
  2. 有什么办法可以全局使用

这对于给定的代码工作正常。但是当我在 MuiThemeProvider 标签中添加任何其他组件时,它不会呈现任何内容,并且 webpack 不会抛出任何错误。

让我们看看下面的例子。我只是将 MyAwesomeReactComponent 复制了两次,它就停止了工作。如果我删除 MyAwesomeReactComponent 的第二个实例,这会正常工作。

import React from 'react';
import ReactDOM from 'react-dom';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import MyAwesomeReactComponent from './MyAwesomeReactComponent';

const App = () => (
  <MuiThemeProvider>
    <MyAwesomeReactComponent />
    <MyAwesomeReactComponent />
  </MuiThemeProvider>
);

ReactDOM.render(
  <App />,
  document.getElementById('app')
);

这里是 MyAwesomeReactComponent.js 的代码

import React from 'react';
import RaisedButton from 'material-ui/RaisedButton';

const MyAwesomeReactComponent = () => (
  <RaisedButton label="Default" />
);

export default MyAwesomeReactComponent;

【问题讨论】:

  • 用 div 标签包装你的组件,然后使用主题提供者。
  • 谢谢,这有帮助。知道这是否是使用
    标签的材料 ui 实现中的错误?
  • 我不确定这是否是一个错误,但是当您向MuiThemeProvider 注入多个组件时,它不会起作用,因为它只需要一个反应组件。

标签: reactjs material-ui


【解决方案1】:

我们是否需要为每个和 evert material ui 组件使用 MuiThemeProvider ?

不,你不需要它。

有没有办法在全球范围内使用它?

是的,您可以在全球范围内使用它。

MuiThemeProvider 组件中包装你的应用(根)组件一

//assuming app.js as root one

ReactDOM.render(
    <MuiThemeProvider>
        <App /> 
    </MuiThemeProvider>, document.getElementById('root')
);

从这里开始,在您的 app.js 以及嵌套或其他组件中,您可以包含任何您想要的主题。

例如app.js 中的 AppBar

import AppBar from 'material-ui/AppBar';

const AppBarExampleIcon = () => (
  <AppBar
    title="Title"
    iconClassNameRight="muidocs-icon-navigation-expand-more"
  />
);


export default class App extends Component {
  render(){
    return (<div className="container"><AppBarExampleIcon /></div>)
  }
}

【讨论】:

  • 谢谢,这确实解决了我的问题。同样在进一步的研究中,我发现解决这个问题的另一种方法是在
    中简单地包装多个材质 ui 组件
猜你喜欢
相关资源
最近更新 更多
热门标签