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

点击文本后如何让React Native Google Places Autocomplete输入框获得焦点?

完全可以通过ref实现该需求,且不会和你现有用来获取地址值的ref冲突,有多种实现方案可选:

方案1:直接复用现有ref(无需新增ref,最优解)

react-native-google-places-autocomplete 组件本身已经在实例ref中内置了focus()方法,你当前用来获取地址值的已有ref可以直接调用该方法触发输入框聚焦,不需要额外新增任何ref:

import { useRef } from 'react';
import { GooglePlacesAutocomplete } from 'react-native-google-places-autocomplete';
import { TouchableOpacity, Text } from 'react-native';

// 你原有用来获取地址值的ref,不需要做任何修改
const placesAutocompleteRef = useRef(null);

// change 链接的点击回调
const handleChangeLocation = () => {
  // 直接调用现有ref的focus方法即可让输入框获得焦点
  placesAutocompleteRef.current?.focus();
  // 如果需要同时选中输入框内已有的位置文本,可加下面这行
  placesAutocompleteRef.current?.setAddressText(placesAutocompleteRef.current?.getAddressText(), true);
};

// 组件绑定ref的逻辑和你之前完全一致,无需调整
<GooglePlacesAutocomplete
  ref={placesAutocompleteRef}
  placeholder="选择位置"
  query={{
    key: "你的Google API密钥",
    language: "zh-CN"
  }}
  // 保留你原有其他配置项
/>

// change 链接绑定点击事件
<TouchableOpacity onPress={handleChangeLocation}>
  <Text>change</Text>
</TouchableOpacity>

方案2:合并多个ref(适用于确实需要多ref绑定的场景)

如果你有特殊业务需求,必须给同一个Autocomplete组件绑定多个不同用途的ref,可以用回调ref的方式实现多ref赋值,不会互相冲突:

import { useRef } from 'react';

// 原有用来获取地址值的ref
const placesAutocompleteRef = useRef(null);
// 新增的其他用途ref
const otherRef = useRef(null);

<GooglePlacesAutocomplete
  ref={(instance) => {
    // 同时给多个ref赋值
    placesAutocompleteRef.current = instance;
    otherRef.current = instance;
  }}
  // 其他原有配置不变
/>

补充:直接获取底层TextInput的ref

如果你需要对输入框做更精细的控制(比如自定义选中文本范围、调整光标位置等),可以通过组件的textInputProps属性单独给底层原生输入框绑定ref:

import { useRef } from 'react';

const textInputRef = useRef(null);

<GooglePlacesAutocomplete
  ref={placesAutocompleteRef} // 保留原有获取地址的ref
  textInputProps={{
    ref: textInputRef // 单独给底层输入框绑定ref
  }}
/>

// 点击change时直接调用原生输入框的方法
const handleChange = () => {
  textInputRef.current?.focus();
  textInputRef.current?.select(); // 全选输入框内已有文本
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:57:04