【发布时间】:2016-01-22 05:57:00
【问题描述】:
我正在尝试将 material-ui 组件合并到基于 react-rocket-boilerplate 构建的项目中。
我收到此错误:
[23:55:11] gulp-notify: [编译错误] C:/react-rocket-boilerplate/app/js/components/Sidebar.js: 解析文件时出现意外令牌 (13:15): C: \react-rocket-boilerplate\app\js\components\Sidebar.js
注意:Sidebar.js 是 material-ui 文档站点上提供的第一个 leftNav 示例(“SIMPLE CONTROLLED LEFTNAV”)的精确副本,只是更改了组件名称。
这里是 Sidebar.js:
import React from 'react';
import LeftNav from 'material-ui/lib/left-nav';
import MenuItem from 'material-ui/lib/menus/menu-item';
import RaisedButton from 'material-ui/lib/raised-button';
export default class Sidebar extends React.Component {
constructor(props) {
super(props);
this.state = {open: false};
}
handleToggle = () => this.setState({open: !this.state.open});
handleClose = () => this.setState({open: false});
render() {
return (
<div>
<RaisedButton
label="Simple Controlled LeftNav"
onTouchTap={this.handleToggle} />
<LeftNav open={this.state.open}>
<MenuItem>Menu Item</MenuItem>
<MenuItem>Menu Item 2</MenuItem>
</LeftNav>
</div>
);
}
}
这是有问题的行:
handleToggle = () => this.setState({open: !this.state.open});
(13:15) 处的字符是紧跟在“handleToggle”之后的空格。
我可以改用这个语法:
handleToggle() {
this.setState({open: !this.state.open});
}
...它解决了错误,但在被调用时不允许我访问“this”。
箭头函数在此上下文中使用时可以编译:
import React from 'react';
const Logo = () => (
<div className="logo">
Hello World
</div>
);
export default Logo;
我非常乐意提供任何可能有帮助的其他信息,请告诉我。
另外...对于组件定义的这些不同语法/格式是否有一个术语?
【问题讨论】:
标签: javascript reactjs gulp material-ui arrow-functions