2016-08-12 2 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», вы получите два «готовых к подписке» выхода, в то время как я ожидаю их в течение трех.

Можно ли как-то исправить эту проблему?

+1

Выразить функция публиковать попробуйте изменить "OnChange" на "OnKeyUp" внутри

+0

Проблема была с публикацией, '' 'Meteor.publish ('SearchResults', функция (запрос) { проверка (запрос, String); если (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.

Смежные вопросы