2016-04-30 11 views
18

Mam ten post w moim konsoli:Nie mogę korzystać z komponentów materiał-ui po aktualizacji do [email protected]

Failed Context Types: Required context muiTheme was not specified in AppBar

AppBar.js:158 Uncaught TypeError: Cannot read property 'prepareStyles' of undefined

mam tylko takie AppBar w moim Komponentu myślę to powinno działać, ale ... tutaj mój bardzo prosty kod:

import React from 'react'; 
import {AppBar} from 'material-ui'; 


    export class MyComponent extends React.Component { 

     render() { 
      return (
       <div> 
        <AppBar 
         title="Title" 
        /> 

       </div> 
      ); 
     } 

    } 

dzięki za pomoc ...

Odpowiedz

32

Z [email protected] kilka rzeczy zostały zmienione.

Możesz zobaczyć link poniżej, aby uzyskać więcej informacji. https://github.com/callemall/material-ui/blob/master/CHANGELOG.md

Dlatego z tych zmian staje się kod:

import React from 'react'; 
    import AppBar from 'material-ui/AppBar'; 
    import baseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; 
    import getMuiTheme from 'material-ui/styles/getMuiTheme'; 

     export class MyComponent extends React.Component { 

      getChildContext() { 
       return { muiTheme: getMuiTheme(baseTheme) }; 
      } 

      render() { 
       return (
        <div> 
         <AppBar 
          title="Title" 
         /> 

        </div> 
       ); 
      }   
     } 

     MyComponent.childContextTypes = { 
      muiTheme: React.PropTypes.object.isRequired, 
     }; 
+0

OK, dostałem to !!! Dzięki wielkie! –

+0

To rozwiązuje problem dla mnie. Dzięki! –

+4

Dlaczego są one bardziej skomplikowane? Byłoby wspaniale, gdybym mógł napisać mniej kodu, aby to działało. – newguy

20

teraz w 0.15.0 można użyć muiThemeProvider:

... 

import getMuiTheme from 'material-ui/styles/getMuiTheme'; 
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; 
import MyAwesomeReactComponent from './MyAwesomeReactComponent'; 

const App =() => (
<MuiThemeProvider muiTheme={getMuiTheme()}> 
    <MyAwesomeReactComponent /> 
</MuiThemeProvider> 
) 

... 

Więc nie trzeba, aby zapewnić kontekst Childrens manualy . Więcej informacji pod numerem documentation.

+0

Czy próbowałeś tego sam? Mój nadal nie działa ... –

+0

@BruceSun Tak, używam go w 2 projektach. –

+2

Znalazłem powód - nie działa, jeśli zdefiniuję mój składnik przy użyciu React.createClass(), ale działa, jeśli utworzyć klasy ES6 rozszerzające React.Component. Nie znalazłem jednak żadnej dokumentacji na ten temat. –

0

Zaimportuj MuiThemeProvider, a następnie zawiń komponent material-ui AppBar w MuiThemeProvider.

import React, { Component } from 'react'; 
import AppBar from 'material-ui/AppBar'; 
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; 
import './App.css'; 

class App extends Component { 

    render() { 

    return ( 
     <MuiThemeProvider> 
     <div> 
      <AppBar title = "Title" /> 
     </div> 
     </MuiThemeProvider> 
    ); 
    } 
} 

export default App; 
Powiązane problemy