【问题标题】:Meteor React subscription delayMeteor React 订阅延迟
【发布时间】:2016-08-13 06:16:50
【问题描述】:

我有这个小sn-p代码:

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”将导致两个“订阅就绪”输出,而我预计会输出三个。

有没有办法解决这个问题?

【问题讨论】:

  • 显示您的发布功能尝试在 中将“onChange”更改为“onKeyUp”
  • 问题出在发布上,Meteor.publish('searchResults', function(query) { check(query, String); if (query.length &gt;= 2) { let items = Items.find( { $text: { $search: query } }, { fields: { searchScore: { $meta: 'textScore' } }, sort: { searchScore: { $meta: 'textScore' } } } ); return items; } });
  • > 2 ;) 修复了什么?
  • 我目前已删除 >=2 条件,我将在客户端检查
  • @IlanHasanov 请添加为答案,我会将其标记为已接受。

标签: meteor reactjs


【解决方案1】:

我注意到您正在将 onChange 属性传递给我建议您使用 onKeyPress 请参阅:https://facebook.github.io/react/docs/events.html#keyboard-events 因为它是纯粹的反应事件,至于订阅就绪日志。确保您在发布功能中设置了适当的条件,而不是 .length &gt;= 2 到 .length &gt; 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2016-02-07
    • 1970-01-01
    • 2018-09-03
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多