You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mapbox SearchBox组件Windows端点击建议无响应求解决方案

解决Mapbox SearchBox(@mapbox/search-js-react)Windows下鼠标点击建议不触发onRetrieve的问题

针对Windows系统下SearchBox组件鼠标点击建议项无法触发onRetrieve事件、仅回车键有效的问题,可尝试以下几种解决办法:

方法1:替换onRetrieve为onSelect事件

组件API中的onSelect事件会在用户通过鼠标点击或回车键选择建议项时触发,兼容性更稳定。修改代码如下:

<SearchBox 
    accessToken={MAPBOX_ACCESS_TOKEN} 
    value={address} 
    onChange={setAddress} 
    onSelect={(res) => console.log("Selected", res)}
/>

方法2:手动监听建议项点击并调用检索方法

如果onSelect仍不生效,可通过ref获取SearchBox实例,手动监听建议列表的点击事件,触发检索操作:

import { useRef, useEffect, useState } from 'react';
import { SearchBox } from '@mapbox/search-js-react';

function AddressSearch() {
  const [address, setAddress] = useState('');
  const searchBoxRef = useRef(null);

  useEffect(() => {
    const suggestionList = document.querySelector('.mapbox-suggestion-list');
    if (!suggestionList) return;

    const handleClick = (e) => {
      const suggestionItem = e.target.closest('.mapbox-suggestion');
      if (suggestionItem && searchBoxRef.current) {
        const suggestion = JSON.parse(suggestionItem.dataset.suggestion);
        searchBoxRef.current.retrieve(suggestion).then(res => {
          console.log("Selected", res);
          setAddress(res.features[0].place_name);
        });
      }
    };

    suggestionList.addEventListener('click', handleClick);
    return () => suggestionList.removeEventListener('click', handleClick);
  }, []);

  return (
    <SearchBox 
      ref={searchBoxRef}
      accessToken={MAPBOX_ACCESS_TOKEN} 
      value={address} 
      onChange={setAddress}
    />
  );
}

方法3:升级组件至最新版本

该问题大概率是组件旧版本的Windows兼容性bug,尝试升级@mapbox/search-js-react到最新稳定版:

npm update @mapbox/search-js-react
# 或
yarn upgrade @mapbox/search-js-react

内容的提问来源于stack exchange,提问作者Carlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:02:50