React Native TextInput和FlatList捕获ListItem的onPress

fwzugrvs  于 2023-03-24  发布在  React
关注(0)|答案(1)|浏览(114)

因此,我试图创建一个自动完成搜索框,它有两个兄弟视图TextInput和FlatList(仅在this.state.data.length> 0时显示),因此我的渲染函数如下所示:-

renderItem = ({ item }) => {
          return (
            <TouchableOpacity 
             onPress={(item) => {/* do something here */}}>
             <Text>{item.key}</Text>
            </TouchableOpacity>
          );
        }

render(){
  return (
   <View>
     <TextInput />
     {this.state.data.length > 0 && 
       <FlatList 
       data={this.state.data}
       renderItem={this.renderItem} />}
   </View>);
}

问题是,当我点击列表项时,第一次点击会触发TextInputonEndEditing回调,然后第二次点击会触发列表项的TouchableOpacityonPress回调。
如何在第一次点击时触发列表项的onPress?

z9smfwbn

z9smfwbn1#

在react-native中它是一个活跃的issue
同时,您可以尝试在ScrollView中处理keyboardShouldPersistTaps属性。

return (
        <ScrollView
            style={ styles.flex }
            automaticallyAdjustContentInsets={ false }
            keyboardShouldPersistTaps="handled"
            contentInset={{ 'bottom':20 }}
            keyboardDismissMode='on-drag'
            >
            <View>...</View>
        </ScrollView>
    );

相关问题