我試圖將material-ui組件合併到由react-rocket-boilerplate構建的項目中。Reactjs Material-UI - 箭頭函數上的意外標記
我得到這個錯誤:
[23:55:11] gulp-notify: [Compile Error] C:/react-rocket-boilerplate/app/js/components/Sidebar.js: Unexpected token (13:15) while parsing file: C:\react-rocket-boilerplate\app\js\components\Sidebar.js
注:Sidebar.js是提供對材料的UI文檔站點只有第一leftNav例子(「SIMPLE控制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});
}
...它解決了錯誤,但不允許我訪問「這個」,當它被調用。在這種情況下使用時
箭頭的功能實現編譯:
import React from 'react';
const Logo =() => (
<div className="logo">
Hello World
</div>
);
export default Logo;
我很樂意提供任何及所有其他信息,可能會幫助,只是讓我知道。
另外...是否有組件定義的這些不同語法/格式的術語?
你的建議肯定能行!至少我可以繼續我目前的工作。非常感謝你。 就像你所說的,雖然我不知道它爲什麼不用箭頭函數編譯,但它很好解決這個問題。希望有人在那裏有一些見解。 –
很高興知道這部分幫助你。你提到你的代碼是基於現有的鍋爐板,希望你也有一個正確的配置babelrc文件。請使用您的投票表示有用的答案,謝謝。 – hazardous
從babeljs [docs](https://babeljs.io/docs/setup/#gulp),如果您安裝了babel 6,則不會提供預設,請檢查您是否安裝了ES 2015預設。你可以使用這個命令的'npm install babel-preset-es2015 --save-dev'安裝它 – hazardous