Обеспечение запуска функции после setState

Я знаю, что SetState принимает обратный вызов, который я использую. Однако по какой-то причине он не запускается после обновления состояния. Я делаю что-то неправильно?

  handleInputChange = (event) => {
        this.setState({
          [name]: event.target.value
        });
          if (event.target.value.length > 1) {
          this.getSuggestions();
          this.setState({
          query: event.target.value,
        }, () => this.getCoordinates)
      }

getCoordinates = () =>{
    const geocoder = new google.maps.Geocoder();
    geocoder.geocode( {"address":this.state.query}, this.onSuccessGetAddress)
  }

Почему два отдельных вызова setState?

xDreamCoding 09.04.2019 00:52

Есть два входа, которые обновляют разные вещи. Второй имеет валидацию (должен быть длиннее 1 символа)

user11331566 09.04.2019 00:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы предоставили обратный вызов, который возвращает функцию this.getCoordinates:

() => this.getCoordinates

Вы хотите предоставить обратный вызов, который вызывает this.getCoordinates:

() => this.getCoordinates()

или

this.getCoordinates

Чем последняя отличается от уже написанной?

user11331566 09.04.2019 00:56

Последний передает функцию как ссылку для выполнения, ваша версия передает функцию, которая возвращает вашу функцию, но которая никогда не вызывается впоследствии.

xDreamCoding 09.04.2019 00:58

Последний эквивалентен () => { const geocoder ... } (точно так, как вы определили), который нужно вызвать только один раз для выполнения внутреннего кода. Это означает, что ваш эквивалентен () => () => { const geocoder ... }, который нужно «вызвать дважды», чтобы выполнить внутренний код.

Dylan Walker 09.04.2019 01:03

Другие вопросы по теме