Шаг 1: в конструкторе мы устанавливаем всех фермеров на фермеров
Шаг 2: TextInput имеет onChangeText, поэтому мы можем использовать наш текст непосредственно, как показано в
Шаг 3: в _searchTextInputChanged мы можем получить доступ к нашему тексту, чтобы отфильтровать наш текст с данными наших фермеров.
Вы можете видеть, есть ли у нас фермеры с городом, тогда мы назначаем его нашему штату, иначе мы устанавливаем все наши данные так, чтобы вы указывали как вы можно увидеть в _searchTextInputChanged
import React from 'react'
import { FlatList, View, TextInput, Button, StyleSheet , Text } from 'react-native'
import { ListItem, SearchBar } from 'react-native-elements';
import data from '../Helpers/FarmersData.js'
import FarmerItem from './FarmerItem'
import { registerRootComponent } from 'expo';
// return data.filter(function (e){return e.City == text}).map(element => <FarmerItem farmer={element} key={element.id} /> );
class Search extends React.Component {
constructor(props) {
super(props)
this.state = {
farmers: data ,
searchedText: "" // Initialisation de notre donnée searchedText dans le state
}
}
_searchTextInputChanged = async (text) => {
const newData = await data.filter(e => e.City.toLowerCase() === text.toLowerCase() );
//change your logic as per your requirement
if( newData.length > 0 ){
this.setState({farmers : newData})
}else{
this.setState({farmers : data })
}
}
render() {
return (
<>
<View style={styles.main}>
<TextInput style={styles.textinput} onChangeText = {(text) => this._searchTextInputChanged(text)} placeholder='Nom du maraicher'/>
{this.state.farmers.map(element => <FarmerItem farmer={element} key={element.id} /> )}
</View>
</>
);
}
}
// Components/Search.js
const styles = StyleSheet.create({
main: {
flex:1,
marginTop:30,
backgroundColor:'white'
},
textinput: {
marginLeft: 5,
marginRight: 5,
height: 50,
borderColor: '#86d972',
borderWidth: 1,
paddingLeft: 5
}
})
export default Search