Расширения облости фильтрации
emargin opened this issue · 4 comments
В официальной доке DaData существует следующая конструкция, дабы расширить поиск до всех стран мира
$element.suggestions({ type: "ADDRESS", constraints: { locations: { country: "*" } } });
существует ли нечто подобное в вашем компоненте?
Да, вы можете использовать следующие пропсы:
filterLocations
дляlocations
в запросеfilterLocationsBoost
дляlocations_boost
в запросе
То есть в вашем примере это будет выглядеть так:
<AddressSuggestions
token={API_KEY}
filterLocations={[{ country: "*" }]}
/>
Обратите внимание - здесь передавать locations нужно как массив, что правильнее с точки зрения официальной документации.
Спасибо большое.
А как мне комбинировать несколько пропсов?
Например, в случае если я использую в своем компоненте
filterFromBound="city" filterToBound="city"
то возращаемые данные выглядят следующим образом
г Москва
г Киров
г Пенза
поиск проводиться только по России, если же я добавляю
filterLocations={[{ country: "*" }]}
поиск начинает проводиться по всем странам, но возвращаемые данные принимают вид
$страна, $штат, $город
$страна, $регион, $город
$страна, $штат/регион, $город
хотелось бы добиться поведения как в том случае, когда отсуствует пропс
filterLocations={[{ country: "*" }]}
Пытаюсь я достичь филтрации по всем городам мира и желаю получать данные в виде
$город
Точно так же и комбинируете:
<AddressSuggestions
token={API_KEY}
filterFromBound="city"
filterToBound="city"
filterLocations={[{ country: "*" }]}
/>
Результатом будет как вы уже написали данные вида:
$страна, $штат, $город
$страна, $регион, $город
$страна, $штат/регион, $город
То есть данные то возвращаются корректные, filter*
оперирует сущностями: то есть какие сущности будут возвращаться в результатах. Вы указали - только города - именно они и возвращаются.
Просто по умолчанию они отображаются в такой форме и здесь уж придется передавать колбек, который на основе объекта дадаты вернет компонент ячейки, например самый простой способ:
<AddressSuggestions
token={API_KEY}
filterFromBound="city"
filterToBound="city"
filterLocations={[{ country: "*" }]}
renderOption={(suggestion) => {
return suggestion.data.city;
}}
/>
И здесь действительно нет такой возможности чтобы после выбора опции была компактная запись. Можно будет такое добавить
Но будьте аккуратны, мир большой и если использовать короткую запись, то может случиться так, что будет сложно выбирать:
Виталий, огромное спасибо!