reactjs - 如何在React应用程序中获取谷歌地图api输入字段的状态更新

标签 reactjs google-maps input google-maps-api-3 react-state-management

根据google map api官方文档, 我试图在我的 React 应用程序中实现自动完成搜索 input,如下所示:

import React, { Component } from 'react';

export class App extends Component {
    state = {
        location: ''
    };

    handleChange = (e) => {
        this.setState({ location: e.target.value });
    };
    render() {
        function initAutocomplete() {
            var input = document.getElementById('pac-input');
            var searchBox = new window.google.maps.places.SearchBox(input);
        }
        initAutocomplete();
        return (
            <input
                defaultValue={this.state.location}
                onChange={this.handleChange}
                id="pac-input"
                className="controls"
                type="text"
                placeholder="Search your College"
            />
        );
    }
}

export default App;

我设法让它正常工作。但是,我看到的唯一问题是,每当我选择/单击自动完成选项时,输入栏的值都会使用所选地址进行更新,但不会在状态中更新。 你可以看看这个short video demo请建议我应该做哪些改变才能使状态管理正常工作?

最佳答案

这里的问题是您只监听输入的 onChange 事件,而不是自动完成的 places_changed 事件,因此输入的 onChange当您从地点建议的自动完成列表中选择地点时,该函数不会运行。尝试按如下方式修改您的代码:

import React, { Component } from "react";

export class App extends Component {
  state = {
    location: ""
  };

  componentDidMount() {
    const app = this;
    function initAutocomplete() {
      var input = document.getElementById("pac-input");
      var searchBox = new window.google.maps.places.SearchBox(input);
      searchBox.addListener("places_changed", function() {
        app.setState({ location: document.getElementById("pac-input").value });
      });
    }
    initAutocomplete();
  }

  handleChange = e => {
    this.setState({ location: e.target.value });
  };

  render() {
    return (
      <input
        defaultValue={this.state.location}
        onChange={this.handleChange}
        id="pac-input"
        className="controls"
        type="text"
        placeholder="Search your College"
      />
    );
  }
}

export default App;

关于reactjs - 如何在React应用程序中获取谷歌地图api输入字段的状态更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61855036/

相关文章:

javascript - react-styleguidist - 以 Component 作为 Prop 的示例 - SyntaxError : Cannot use import statement outside a module

reactjs - 为什么 TypeScript 无法对 React props 进行类型检查?

javascript - 我如何计算点之间的距离 Google Maps Api V3

jQuery:设置输入标签所需的属性

javascript - 检查表单中的每个元素是否已填充 JQUERY

javascript - 如何从父组件调用子组件函数?

python - 基于缩放级别的服务器端坐标集群

javascript - 类型错误 : Cannot read property 'success' of undefined

javascript - 号码验证不起作用

javascript - 解析错误: Unexpected token "" at EOF in a basic react . js文件