Command Palette

Search for a command to run...

Настройка автозаполнения адреса

В этом руководстве вы узнаете, как включить встроенное автозаполнение адреса через DaData при оформлении заказа или добавить собственный провайдер для другой страны или сервиса.

Ввод адреса на шаге оформления заказа реализован как подключаемый провайдер, а не как фиксированный набор полей. Витрина поставляется с одним реальным провайдером (DaData для российских адресов), обычным полем адреса как резервным вариантом и режимом ручного ввода, на который покупатель может переключиться в любой момент.

Как выбирается провайдер

считывает активный провайдер из переменной окружения и переключается по нему:

src/modules/common/components/address-autocomplete/index.tsx
1const renderAutocomplete = () => {
2 switch (true) {
3 case isDaData(addressAutocompleteProvider):
4 return <DaDataAddressInput {...props} />
5 default:
6 return <PlainAddressInput {...props} />
7 }
8}

и оба определены в . Любое значение кроме , включая незаданную переменную, проваливается в (), который отрисовывает одно поле адреса без какого-либо автозаполнения.

Независимо от активного провайдера, также отрисовывает чекбокс, который позволяет посетителю сразу переключиться на ручной ввод. Чекбокс подменяет провайдер на , четыре обычных поля для адреса, индекса, города и региона. Поэтому автозаполнение никогда не блокирует того, чей адрес не подходит под ожидания провайдера.

Включение встроенного провайдера DaData

Задайте две переменные окружения в :

apps/storefront/.env.local
1NEXT_PUBLIC_ADDRESS_AUTOCOMPLETE_PROVIDER=dadata
2NEXT_PUBLIC_ADDRESS_AUTOCOMPLETE_PROVIDER_API_KEY=

Получите API-ключ в своём аккаунте DaData. () передаёт его напрямую в компонент библиотеки . Этот компонент подсказывает только российские адреса.

Добавление провайдера для другой страны

Каждый компонент-провайдер принимает одни и те же props: на входе, на выходе:

src/modules/common/components/address-autocomplete/types.ts
1export type AddressFields = {
2 address_1: string
3 postal_code: string
4 city: string
5 province: string
6}
7
8export type AddressAutocompleteProps = {
9 values: AddressFields
10 onChange: (fields: AddressFields) => void
11 required?: boolean
12}

Чтобы добавить провайдер для другой страны или сервиса:

  1. Создайте файл в , реализующий , который вызывает с объектом каждый раз, когда посетитель выбирает подсказку.
  2. Добавьте для него в переключателе выше и небольшой хелпер рядом с в .
  3. Укажите в тот id, который проверяют ваш и хелпер.

На форму props и вызовы у можно ориентироваться при написании нового провайдера: это рабочий минимальный пример. Сам он, впрочем, не обращается ни к какому внешнему API.

Материалы

Изменено 21 августа 2026 г.·Редактировать страницу