当 Algolia 中的搜索词为空时,如何防止显示搜索结果?

How do you prevent search results from showing when the search term is empty in Algolia?

我关注了他们的 tutorial,但它始终显示搜索结果页面,即使在首次加载页面且搜索框内容为空时也是如此。我尝试添加 queryHook 并且仅在术语不为空时进行搜索,但是当您加载页面时它仍然显示搜索结果。事实上, queryHook 甚至不会在第一次加载时被调用。只有当您在搜索框中输入时才会调用它。如何隐藏搜索结果 除非 用户开始输入?

https://community.algolia.com/instantsearch.js/v2/widgets/searchBox.html#usage

这行得通,但我认为这不是正确的方法,因为它仍然在空文本框中进行搜索。此外,当您通过单击右侧的 X 重置搜索词时,它不会隐藏结果(因为它不会调用 queryHook)。

    <main id="results" class="collapse">
        <div id="hits"></div>
        <div id="pagination"></div>
    </main>

  # CoffeeScript
  search.addWidget(
    instantsearch.widgets.searchBox({
      container: '#search-input',
      queryHook: (term, searchFunction) ->
        console.log "term = #{term}"
        if term
          $('#results').show()
        else
          $('#results').hide()
        searchFunction(term)

您可以使用已经包含在 InstantSearch 中的 Helper.js library。在您的情况下,在实例化搜索时检查查询长度:

var search = instantsearch({
    // other search parameters
    searchFunction: function(helper) {
    if (helper.state.query.length === 0) {
        return; // do not trigger search
    }

    helper.search(); // trigger search
  }
});