2016-03-29 5 views
3

私は、入力onChangeイベントから呼び出された検索機能にデバダイズをlodashで追加しようとしています。以下のコードは、タイプエラー 'function is expected'を生成します。これは、lodashが関数を期待しているためです。これを行う正しい方法は何ですか?また、すべてインラインで行うことができますか?これまでのほとんどすべての事例を無駄に試しました。リアクタ入力によるデバッガ

ちょうどあなたが取得しているエラーを回避する一方でとても簡単な質問

ではありません

search(e){ 
let str = e.target.value; 
debounce(this.props.relay.setVariables({ query: str }), 500); 
}, 

答えて

7

デバウンス機能はJSXにインラインで渡されたか、クラスメソッドとして直接設定することができます。

search: _.debounce(function(e) { 
    console.log('Debounced Event:', e); 
}, 1000) 

はフィドル:https://jsfiddle.net/woodenconsulting/69z2wepo/36453/

あなたはes2015を使用している+あなたが定義することができる場合あなたのデバウンス方法はconstructorまたはcomponentWillMountです。

例:そのため

componentWillMount() { 
    this.search = _.debounce(e => { 
    console.log('Debounced Event:', e); 
    }, 1000); 
} 
+0

感謝。私が今見ているのは合成イベントのコンソールログです。検索を実行するにはe.target.valueが必要です。e.persist()を試しましたが、何もしないようです。デバウンスは技術的には機能していますが、値を渡すことなく機能しません。助けてくれてありがとう。 –

+0

私はそれを正確に使うことはできませんでしたが、私はどこに行く必要があったのですか。私は基本的に入力呼出し検索(e)を受けて、そのイベントをデバウンスして別の関数に渡しました。私はevent.persist()について読んだが、私はその仕事を得ることができなかった。ご協力いただきありがとうございます!! –

+0

この回答も確認してください:https://stackoverflow.com/a/28046731/551030 –

1

、あなたが機能であなたsetVariablesをラップする必要があります別の手で

search(e){ 
    let str = e.target.value; 
    _.debounce(() => this.props.relay.setVariables({ query: str }), 500); 
} 

、私は、リレーの中で論理をデバッフィングする必要があると信じています。ここに見られるように

関連する問題