編集: 私の間違いです。ビルドを実行するたびに、何らかの理由で webpack ホットローダーが古い js をキャッシュしていました。リセットして再構築し、現在は機能しているようです。
yahoo Fluxible React アプリで es6 スタイル クラス宣言を使用して単純な検索ボックスを作成しようとしています。todo の例に取り組んでいて、それを es6 スタイルの構文に変換していますthis.setState
が、_onChange
メソッドでエラーが発生しています。コンストラクターで関数を「this」にバインドしましたが、まだエラーが発生しています。
import React from 'react';
import searchProducts from '../actions/searchProducts';
const ENTER_KEY_CODE = 13;
class SearchBox extends React.Component {
static contextTypes = {
executeAction: React.PropTypes.func.isRequired
};
static propTypes = {
text: React.PropTypes.string
};
static defaultProps = {
text:''
};
constructor(props) {
super(props);
this.state = {
text: props.text
};
this._onChange = this._onChange.bind(this);
this._onKeyDown = this._onKeyDown.bind(this);
}
render() {
return (
<input
className="search-box"
name="search-keyword"
value={this.state.text}
onChange={this._onChange}
onKeyDown={this._onKeyDown}
/>
);
}
_onChange(event, value) {
console.log( event.target.value);
//error is here///////////////////////////////////////////////////
this.setState({text: event.target.value});
}
_onKeyDown(event) {
if (event.keyCode === ENTER_KEY_CODE) {
event.preventDefault();
event.stopPropagation();
var text = this.state.text.trim();
if (text) {
this.context.executeAction(searchProducts, {
text: text
});
}
this.setState({text: ''});
}
}
}
export default SearchBox;