【问题标题】:Material-ui error (Missing class properties transform.)Material-ui 错误(缺少类属性转换。)
【发布时间】:2016-04-25 22:51:32
【问题描述】:

我一直在尝试使用 react-mounter 在 Meteor 中设置 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/>
});
}
});

【问题讨论】:

    标签: meteor reactjs babeljs material-ui


    【解决方案1】:

    你需要一个 Babel 变换。 Meteor 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

    【讨论】:

    • 如果您还没有安装 stage-1。使用npm install --save-dev babel-preset-stage-1
    【解决方案2】:

    我将它从扩展类更改为 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;
    

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 1970-01-01
      • 2019-04-11
      • 2017-03-19
      • 1970-01-01
      • 2018-03-08
      • 2018-05-08
      • 2017-01-27
      • 2018-11-16
      相关资源
      最近更新 更多