react-rocket-boilerplateから構築されたプロジェクトにmaterial-uiコンポーネントを取り込もうとしています。
次のエラーが表示されます。
[23:55:11] gulp-notify: [コンパイル エラー] C:/react-rocket-boilerplate/app/js/components/Sidebar.js: ファイルの解析中に予期しないトークン (13:15): C:\react-ロケットボイラープレート\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;
役立つ可能性のあるすべての追加情報を喜んで提供させていただきますので、お知らせください。
また...コンポーネント定義のためのこれらの異なる構文/形式の用語はありますか?