2016-09-26 11 views
0

入力テキストを画面に印刷するコンポーネントを作成しようとしています。ここでは私が作業しているものを示します。React - _this2.SetStateは関数ではありません

class SearchBar extends Component { 
    constructor(props) { 
    super(props); 

    this.state = { term: '' }; 
    } 

    render() { 
    return (
     <div className="search-bar"> 
     <input value={this.state.term} onChange={event => this.SetState(event.target.value)} /> 
     The value of input is: {this.state.term} 
     </div> 
    ); 
    } 
} 

しかし、私はクロームコンソールでエラーを取得しておいてください。

bundle.js:19818 Uncaught TypeError: _this2.SetState is not a function 

任意のアイデア?私はあなたがこれをバインドする必要があると思う

おかげ

+0

可能な重複の(http://stackoverflow.com/questions/29577977/unable-to-access-react- [イベントハンドラ内のインスタンス(この)と反応アクセスすることができません] instance-this-inside-event-handler) – vijayst

答えて

4

ようになるはずです、このコンテキストコンポーネントを実行していない:私はあなたが指定しなければならなかったと信じて

class SearchBar extends Component { 
 
    constructor(props) { 
 
    super(props); 
 
    this.state = { term: '' }; 
 
    this.setInputState = this.setInputState.bind(this); 
 
    } 
 
    
 
    setInputState(event) { 
 
    this.setState({ term: event.target.value }); 
 
    } 
 

 
    render() { 
 
    return (
 
     <div className="search-bar"> 
 
     <input value={this.state.term} onChange={this.setInputState} /> 
 
     The value of input is: {this.state.term} 
 
     </div> 
 
    ); 
 
    } 
 
}

1

は、(何もしゃれが意図していない)これを試してみてください。

+2

また、 'setState'であってはなりませんか?キャップが – Li357

+0

であることに注意してください。それも問題です。ちょうど彼が持っていたものをコピーして貼り付けました。 –

1

{event => this.SetState(event.target.value)}関数をコンポーネントthisにバインドする必要があります。問題あなたのonChange機能が

コードは、このお試しください。この

const onChange = (event) => { this.setState({term:event.target.value}) } 

<input value={this.state.term} onChange={onChange.bind(this) /> 
0

を州で変更されたもの:

this.SetState({ term: event.target.value }) 

代わりに

this.SetState(event.target.value) 
関連する問題