自动焦点属性在 React Native 的文本输入组件中不起作用

Posted

技术标签:

【中文标题】自动焦点属性在 React Native 的文本输入组件中不起作用【英文标题】:Auto Focus Property is not working in Text Input Component on React Native 【发布时间】:2021-10-15 10:28:02 【问题描述】:

我正在制作一个搜索栏,我希望在单击“搜索”按钮后打开键盘,但是 TextInput 的 autoFocus 属性不起作用。我做错了什么?

代码如下:

const SearchBar = () => 
    return (
        <View style= flex: 1 >
            <TextInput placeholder="Search"
                style= width: Dimensions.get('screen').width, height: 50, borderWidth: 1, 
                borderRadius: 20 
                autoFocus=true 
            /> 
        </View>
     )


const Search = () => 
    return (
        <TouchableWithoutFeedback onPress=()=>Keyboard.dismiss() >
            <SearchBar />
       </TouchableWithoutFeedback>
    )
 

【问题讨论】:

【参考方案1】:

嗯,理想情况下,autoFocus 应该可以安装这个组件。

如果不是,解决方法是显式添加一个 ref 并聚焦它

class ABC extends .. 

constructor(props)
...
this.textInput = React.createRef();



componentDidMount()
this.textInput.current.focus();


 SearchBar = () => 
    return (
        <View style= flex: 1 >
            <TextInput placeholder="Search"
                style= width: Dimensions.get('screen').width, height: 50, borderWidth: 1, 
                borderRadius: 20 
                autoFocus=true 
ref=this.textInput
            /> 
        </View>
     )



【讨论】:

以上是关于自动焦点属性在 React Native 的文本输入组件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将焦点自动更改为 react native 中的下一个 TextInput

在 react-native 中更改 TextInput 焦点的 underlineColorAndroid

React-Native:将焦点设置到由数组构建的自定义组件

react native 隐藏键盘 TextInput失去焦点

React Native 文本输入

React-native view auto width by text inside