Реагировать на собственный захват TextInput и FlatList при нажатии ListItem

Поэтому я пытаюсь создать окно поиска автозаполнения, имеющее 2 родственных представления 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>);
}

Проблема в том, что когда я нажимаю на элемент списка, первый щелчок вызывает onEndEditing обратный вызов TextInput а затем второй щелчок вызывает onPress из TouchableOpacity элемента списка.

Как я могу вызвать onPress элемента списка при первом нажатии, пожалуйста?

демонстрационный подарок

1 ответ

Решение

Это активная проблема в реакции-родной.

А пока можно попробовать справиться keyboardShouldPersistTaps недвижимость в ScrollView вместо.

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