3

我正在使用 Algolia 的 Instantsearch.js,我想从我的脚本中更新一个与 Algolia 无关的 uri 查询参数。我看到我可以使用帮助程序设置查询和搜索:

search.helper.setQuery('myquery').search();

这可行,但我想知道是否可以使用帮助程序在查询字符串中设置一个额外的 uri 参数,该参数与 Algolia 查询无关,而是与我的网站的功能相关。

我看到文档中有多种功能可以设置查询参数: https ://github.com/algolia/algoliasearch-helper-js#url-helpers 但它们似乎都不符合我的要求。您对我如何在执行上面的 search.helper.setQuery 之前将查询字符串(例如:“country_code”)更新为一个值(例如:“FR”)有什么建议吗?理想情况下,我希望这两个值同时在 uri 中设置。谢谢!

4

1 回答 1

8

Instantsearch.js 没有提供 API 来执行此操作,但它会保留由其他代码段设置的每个参数。所以在你的情况下,如果 URL 已经有 country_code,那么你就完成了。

否则,如果您想从前端执行此操作,则可以使用浏览器的History API。此外,您可以在帮助器上使用getStateAsQueryString,它将序列化当前状态并让您添加更多参数(例如 country_code)。但是您需要小心使用用于在 Instantsearch 中初始化 URL 机制的相同参数(例如哪些属性用于 URL)。如果你使用默认值,你应该很好。

为了替换当前的 URL / 历史状态,代码如下所示:

window.history.replaceState(
  null,
  'Title',
  '?' + helper.getStateAsQueryString({
    moreAttributes: {
      country_code: 'fr'
    }
  }));

要更改参数的当前值,它将类似于:

window.history.pushState(
  null,
  'Title',
  '?' + helper.getStateAsQueryString({
    moreAttributes: {
      country_code: 'de'
    }
  }));
于 2016-01-06T18:38:02.780 回答