Fas*_*sna 5 javascript filter facet algolia instantsearch.js
我的 URL 中预定义了一些过滤器和查询参数。我需要在 URL 中添加一些其他参数来跟踪用户的来源和其他一些目的。但是,每当我进行新的细化或进入新页面(分页)时。附加参数已被删除。我怎样才能保留这些参数,直到我转到任何其他路线?
为了保留现有的 url 参数,您必须在 router.history 中创建自己的 URL。
为此,请在搜索时抓取当前对象location.search并合并,或者在退出搜索时删除该对象。routeStaterouteState
我希望以下代码对您有所帮助,如果有人有任何更正,我很高兴听到他们的声音。
const algoliaAppId = 'APP_ID';
const algoliaApiKey = 'API_KEY';
const algoliaIndex = 'instant_search';
const search = instantsearch({
indexName: algoliaIndex,
algoliasearch(algoliaAppId, algoliaApiKey),
routing: {
router: instantsearch.routers.history({
createURL({ qsModule, location, routeState }) {
// current search params
const indexState = routeState[algoliaIndex] || {};
const { origin, pathname, hash, search } = location;
// grab current query string and convert to object
const queryParameters = qsModule.parse(search.slice(1)) || {};
// if there is an active search
if (Object.keys(indexState).length ){
// merge the search params with the current query params
Object.assign(queryParameters, routeState);
}else{
// remove the search params
delete queryParameters[algoliaIndex];
}
let queryString = qsModule.stringify(queryParameters);
if(queryString.length){
queryString = `?${queryString}`;
}
return `${origin}${pathname}${queryString}${hash}`;
},
})
}
});
search.start();
Run Code Online (Sandbox Code Playgroud)