1

我的应用在 React 中运行。我已经安装了带有 react-map-gl-geocoder、react-map-gl 和 mapbox-gl 的地图。我正在创建一个带有 React map GL 的地图应用程序,使用 Geocoder 进行地址搜索。地图运作良好。现在我需要能够在我的子组件 Map 中读取用户在输入地址中键入的内容,以便我可以在我为它创建的空间中更新我的母组件 App 中的状态(this.state.answerOptionsInputs .问题1)。

在此处输入图像描述 我尝试在 MapGL 组件和 Geocoder 组件的 onChange 事件上传递一个函数,但它不起作用。

Map.js
    <MapGL
            ref={mapRef}
            {...viewport}
            mapStyle="mapbox://styles/mapbox/streets-v9"
            width="100%"
            height="100%"
            onChange={ onSearchLocation }
            onViewportChange={handleViewportChange}
            mapboxApiAccessToken={MAPBOX_TOKEN}>
            <Geocoder
              mapRef={mapRef}
              containerRef={geocoderContainerRef}
              onViewportChange={handleGeocoderViewportChange}
              mapboxApiAccessToken={MAPBOX_TOKEN}
              position="top-left"
              onChange={ onSearchLocation }
            />
          </MapGL>

App.js

  handlerLocation(e) {
    const { value } = e.target;
        this.setState (prevState => {
          return {
            answerOptionsInputs: {
              ...prevState.answerOptionsInputs,
              Question1: value
            }
          }
        })   }

<Map onSearchLocation = { this.handlerLocation }/>

非常感谢提前!!

4

1 回答 1

0

可以试试

onResult={onSearchLocation } 

代替

onChange={ onSearchLocation }
于 2021-09-03T11:23:19.670 回答