2016-04-25 90 views
3

我一直在尝试使用react-mounter设置Meteor中的material-ui主题来安装组件。Material-ui错误(缺少类属性转换。)

我在设置它时遇到了问题,于是我扩展了组件,以便可以使用material-ui站点上的示例设置主题。

我现在收到以下错误消息。

client/components/navbar.jsx:14:4:/client/components/navbar.jsx:缺少 类属性转换。

下面是导航栏的代码示例

import React from 'react'; 
import AppBar from 'material-ui/AppBar'; 
import IconButton from 'material-ui/IconButton'; 
import Navigationclose from 'material-ui/svg-icons/navigation/close'; 
import IconMenu from 'material-ui/IconMenu'; 
import NavigationMoreVert from 'material-ui/svg-icons/navigation/more-vert'; 
import MenuItem from 'material-ui/MenuItem'; 
import baseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; 
import getMuiTheme from 'material-ui/styles/getMuiTheme'; 


class Navbar extends React.Component { 

    childContextTypes: { 
    muiTheme: React.PropTypes.object.isRequired 
    } 

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

    render() { 

     return (<AppBar 
      title="Title" 
      iconElementLeft={<IconButton><Navigationclose /></IconButton>} 
      iconElementRight={ 
      <IconMenu 
       iconButtonElement={ 
       <IconButton><NavigationMoreVert /></IconButton> 
       } 
       targetOrigin={{horizontal: 'right', vertical: 'top'}} 
       anchorOrigin={{horizontal: 'right', vertical: 'top'}} 
      > 
       <MenuItem primaryText="Refresh"/> 
       <MenuItem primaryText="Help"/> 
       <MenuItem primaryText="Sign out"/> 
      </IconMenu> 
     } 
     />); 
    } 
} 


export default Navbar; 

这里是router.jsx

import React from 'react'; 
import {mount} from 'react-mounter'; 
import {MainLayout} from '/client/layouts/mainLayout.jsx'; 
import Content from '/client/components/content.jsx'; 
import Navbar from '/client/components/navbar.jsx'; 
import Footer from '/client/components/footer.jsx'; 

FlowRouter.route("/", { 
    action() { 
    mount(MainLayout, { 
      navbar: <Navbar/>, 
     content: <Content/>, 
     footer: <Footer/> 
}); 
} 
}); 

回答

0

我从扩展类太React.createClass改变它,它现在的作品。

import React from 'react'; 
import AppBar from 'material-ui/AppBar'; 
import IconButton from 'material-ui/IconButton'; 
import Navigationclose from 'material-ui/svg-icons/navigation/close'; 
import IconMenu from 'material-ui/IconMenu'; 
import NavigationMoreVert from 'material-ui/svg-icons/navigation/more-vert'; 
import MenuItem from 'material-ui/MenuItem'; 
import baseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; 
import getMuiTheme from 'material-ui/styles/getMuiTheme'; 

var Navbar = React.createClass({ 
    childContextTypes: {muiTheme: React.PropTypes.object}, 
    getChildContext() { 
     return {muiTheme: getMuiTheme(baseTheme)}; 
    }, 
    navigate(event, index, item) { 
     console.log('navigate', item); 
     FlowRouter.go(item.route); 
    }, 
    getMenuItems() { 
     console.log('navigate1'); 
     return [ 
      { route: '/', text: 'Home' }, 
      { route: '/table', text: 'Table' } 
     ]; 
    }, 

    render() { 
     console.log('Render'); 
     return (<AppBar 
      title="Title" 
      iconElementLeft={<IconButton><Navigationclose /></IconButton>} 
      iconElementRight={ 
      <IconMenu 
       iconButtonElement={ 
       <IconButton><NavigationMoreVert /></IconButton> 
       } 
       targetOrigin={{horizontal: 'right', vertical: 'top'}} 
       anchorOrigin={{horizontal: 'right', vertical: 'top'}} 
      > 
       <MenuItem primaryText="Refresh"/> 
       <MenuItem primaryText="Help"/> 
       <MenuItem primaryText="Sign out"/> 
      </IconMenu> 
     } 
     />); 
    } 
}); 


export default Navbar; 
2

你需要一个巴贝尔变换。流星1.3.3+通过.babelrc

支持额外的插件和预设安装静态变换:

npm install babel-plugin-transform-class-properties 

# .babelrc 
{ 
    "presets": [ 
    "meteor", 
    "es2015", 
    "stage-1" 
    ], 

    "plugins": [ 
    "transform-class-properties" 
    ] 
} 

Support in Meteor 1.3.3

The transform

+1

如果你还没有安装阶段-1呢。使用'npm install --save-dev babel-preset-stage-1' –