2017-01-30 21 views
1

に反応エラーは、私は次のコードを持っている

class Filter extends React.Component { 
    ... 
    return 
    <SearchBar 
     getSearchValue={this.props.getSearchValue} 
    /> 
    ... 
} 

class Layout extends React.Component { 
    constructor(){ 
    super() 
    this.state={ 
     searchValue: '' 
    } 
    } 
    getSearchValue(searchValue){ 
    this.setState({searchValue}) 
    } 
    ... 
    return 
    <Filter 
     getSearchValue={this.getSearchValue.bind(this)} 
    /> 
    ... 
} 

それから私は、フィルターと呼ばれる子を、持っています

そして最後に検索コンポーネント自体:今

class SearchBar extends React.Component { 

    handleEvent(e){ 
    this.props.getSearchValue(e.target.value) 
    } 
    ... 
    return 
     <input onChange={this.handleEvent.bind(this)}/> 

} 

、私はかなりの午前URE私はこのような何かを持っていたが、その後、私はそれを台無しにし、戻ってそれを実行しようとしましたが、今私は、エラーメッセージが出ます:

捕捉されない例外TypeErrorを:this.props.getSearchValueは

は、いずれかである関数ではありません私のバインディングは間違っていますか?私は数回試しました。

Console.log( 'Hi')を置き、レイアウトのgetSearchValueからthis.setState()を削除し、SearchBarの変数をthis.props.getSearchValueに渡さないと、メッセージが表示されますコンソールに接続します。したがって、関数は機能しますが、引数なしでのみ機能します。どうして?

+0

どのコンポーネントで正確にエラーが表示されますか?このコードはOKです。コンポーネントのコードを追加できますか? – lustoykov

+0

SearchBar.value –

+1

コンストラクタで見つからない 'super()'がこれを引き起こしている可能性があります –

答えて

0

コーディングは、以下の文で)余分除いて、正しいです:

<Filter 
    getSearchValue={this.getSearchValue.bind(this))} 
/> 

そうでない場合は、コードの他のエリアに問題がある可能性があります。

+0

ちょうどタイプミスでした。 –

+0

私は同じことを試して、私は本当にsetState関数を呼び出すことができます。このようにして孫に関数を渡すことは問題ありません。 –

関連する問題