Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
20
rated 0 times [  25] [ 5]  / answers: 1 / hits: 7025  / 2 Years ago, thu, january 13, 2022, 12:00:00

I need to make a text input that shows a list of items as soon as you start typing. And only those items(in the list) can be selected as the option for input. I tried using the picker component but I need to add a feature where the user can type and items related to it will be shown in the dropdown/picker and then the user will be able to select one of them as the option.


More From » reactjs

 Answers
4

If you want to make it with your own custom design, then go with something like this:


  const [filterBankList, setFilterBankList] = useState([]);
const [bankName, setBankName] = useState('');


<TextInput
value={bankName}
placeholder={strings.selectBankName}
style = {styles.textInput}
onChangeText={filterBanks}
/>
<FlatList
data={filterBankList}
renderItem={({item, index}) => (
<TouchableOpacity
onPress={() => onBankSelected(item?.bank)}>
<VariantsBox>
<Text
>
{item?.bank || ''}
</Text>
</VariantsBox>
</TouchableOpacity>
)}
keyExtractor={item => item.bank}
/>

Inside your filterBanks method, you can update the filterBankList, so that the flatlist is updated with the bank name.


const filterBanks = value => {

let filterData =
bankList && bankList?.length > 0
? bankList?.filter(data =>
data?.bank?.toLowerCase()?.includes(value?.toLowerCase()),
)
: [];
setFilterBankList([...filterData]);
};

Inside your onBankSelected(which you call when you have selected one of the options), then just set the bankName and empty the filterlist.


const onBankSelected = value => {
setBankName(value);
setFilterBankList([]);
};

And if you want to use some library to avoid this, you can then go with react-native-searchable-dropdown


[#498] Wednesday, January 5, 2022, 2 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
dominics

Total Points: 424
Total Questions: 99
Total Answers: 107

Location: South Korea
Member since Fri, Sep 11, 2020
4 Years ago
dominics questions
;