我和我的团队一直在使用Antd
作为react组件库。我被要求将google.map
的Places库连接到一个输入字段,这样我们就可以获得一个简单的地址下拉列表。
问题是Antd
的输入组件被包裹在引擎盖下面。因此,当我单击google.maps
位置菜单中的地址时,它会在输入字段中出现毫秒,然后消失。
我试过了所有的event.preventDefault()
、event.stopPropoagtion()
。将google.maps
位置返回的数据与嵌套良好的react ui组件组合在一起有什么技巧吗?
(太长,无法注释(
我也有同样的问题。我正在使用带有功能组件和@react谷歌地图/api库的NextJS。
我使用的解决方法:简单的<input>
元素与正确的CSS类相结合,使其看起来像Antd<Input>
。
像这样:
<LoadScript
googleMapsApiKey={process.env.NEXT_PUBLIC_GOOGLE_MAP_API_KEY}
libraries={libraries}
>
<Autocomplete
onLoad={(autocomplete) => setAutocomplete(autocomplete)}
onPlaceChanged={onPlaceChanged}
restrictions={{ country: "fr" }}
fields={['geometry.location', 'formatted_address']}
>
<input
type="text"
placeholder="Enter your address"
className="ant-input"
/>
</Autocomplete>
</LoadScript>
这样,当从"位置"菜单中单击地址时,其值将保留在输入字段中。
如果有人有一个更好、不那么棘手的解决方案,我正在寻找!
这是一个非常简单的状态管理问题。听起来谷歌位置输入字段工作正常,否则根本不会显示。如果你的输入字段连接到Reactjs,那么你需要将谷歌位置响应数据添加到你的状态管理中,它应该停止消失。当公司使用自定义状态管理系统时,这种情况经常发生。