我正在使用Algolia的Instantsearch.js,我想从我的脚本中更新非algolia相关的uri查询参数.我看到我可以使用帮助器设置查询和搜索:
search.helper.setQuery('myquery').search();
这有效,但我想知道我是否可以使用帮助器在查询字符串中设置一个与Algolia查询无关的附加uri参数,但是我的网站的功能.
我看到在文档中有各种各样的函数来设置查询参数:https: //github.com/algolia/algoliasearch-helper-js#url-helpers 但它们似乎都不符合我的要求.你有没有关于如何更新查询字符串的建议,例如:"country_code"到一个值,例如:"FR"在执行上面的search.helper.setQuery之前?我理想地喜欢它,以便两个值同时在uri中设置.谢谢!
instantsearch.js不提供API来执行此操作,但它将保留由其他代码片段设置的每个参数.所以在你的情况下,如果URL已经有country_code,那么你已经完成了.
否则,如果您想从前端执行此操作,则可以使用浏览器的History API.此外,您可以在助手上使用getStateAsQueryString,它将序列化当前状态并允许您添加更多参数(例如country_code).但是,您需要小心使用与初始化即时搜索中的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' } }));