2016-08-12 5 views
0

に反応:は流星が、私はこのコードの小さなスニペット持つサブスクリプション遅延

getSearchQuery(evt) { 
    let query = evt.target.value; 

    Meteor.subscribe('searchResults', query, function() { 
     console.log('subscription ready'); 
    }); 
    } 

render() { 
    return (
      <TextField 
      hintText='Hint text' 
      onChange={this.getSearchQuery.bind(this)} 
      fullWidth={true} 
      /> 
    ) 
    } 

を入力して最初の文字を入力した後、私は、コンソール「サブスクリプションの準備ができて」出力に期待するが、この出力は、唯一の二文字を入力した後に表示されます。言い換えれば、 '購読準備完了'出力は、次の文字入力まで遅延します。

たとえば、検索文字列が「123」の場合、「123」と入力すると2つの「購読可能な」出力が得られますが、3つは期待しています。

この問題は何とか解決できますか?

+1

"onKeyUpを" は

+0

内の問題は出版、 '' 'Meteor.publish( 'にsearchResults'、機能(クエリ){ チェック(クエリ、String)をしていましたし "のonChange" を変更してみてください、あなたの公開機能を表示します。 もし(query.length> = 2){ ましょう項目は= Items.find( {$テキスト:{ $検索:クエリ } }、 { フィールド:{ searchScore:{ $メタ:「textScore ' } }、 ソート:{ searchScore:{ $ meta: 'textScore' } } } ); 返品商品; } }); '' ' – torayeff

+0

> 2;)は固定されていますか? –

答えて

1

私は、あなたがonKeyPressを使用することをお勧めします。https://facebook.github.io/react/docs/events.html#keyboard-eventsを参照してください。サブスクリプションレディログのように、それは純粋な反応イベントです。 .length >= 2の代わりに、公開機能で適切な条件を設定していることを確認してください。 length > 2

関連する問題