Как извлечь значения почтового индекса из Reaction-Geosuggest? - PullRequest
0 голосов
/ 05 января 2019

Краткое описание

Я пытаюсь получить значение города, штата и почтового индекса из результатов, предоставленных onSuggestSelect реквизитом с использованием компонента npm react-geosuggest. Вы можете найти информацию об этом здесь: https://www.npmjs.com/package/react-geosuggest

Ожидаемые результаты

Я создал обработчик для обработки изменений, возвращаемых onSuggestSelect, и в этом обработчике я пытаюсь захватить данные, которые мне нужны, чтобы сохранить их в состоянии. Используя следующее:

handleOnSuggestSelect(suggestion) {
  this.setState({
    address: suggestion.label
  });
}

Я ожидал, что значение offertion.label будет хранить весь адрес как таковой: 1234 Maple Street, Miami, FL, 33010, USA

Фактические результаты

Вместо 1234 Maple Street, Miami, FL, 33010, USA я увидел следующее значение: 1234 Maple Street, Street. Почему значение ,Street отображается после начального адреса улицы вместо остальной ожидаемой информации (город, штат, почтовый индекс)?

Дополнительная информация

Как получить разные компоненты адреса с метки? Особенно город, штат и почтовый индекс?

Вы можете видеть, как у меня установлен компонент react-geosuggest, как описано в ответе, который я разместил здесь: Получить значение ввода поля ввода response-geosuggest

1 Ответ

0 голосов
/ 27 февраля 2019

Чтобы получить действительные компоненты адреса в вас handleOnSuggestSelect, вы можете получить к ним доступ следующим образом:

handleOnSuggestSelect(suggest) {
  if (!suggest.gmaps) {
    return;
  }

  const components = suggest.gmaps.address_components;

  const address = {
    street: this.findAddressComponent(components, 'street_number', 'short_name') + ' ' + this.findAddressComponent(components, 'route', 'short_name'),
    city: this.findAddressComponent(components, 'locality', 'short_name'),
    state: this.findAddressComponent(components, 'administrative_area_level_1', 'short_name'),
    zip: this.findAddressComponent(components, 'postal_code', 'short_name'),
  }

  this.setState({
    address
  });
}

findAddressComponent(components, type, version) {
  const address = components.find(function(component) {
    return (component.types.indexOf(type) !== -1);
  });

  return address[version];
}

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

...