چطور یک dropdown در react native داشته باشیم؟
- نفیسه افقی 1 سال قبل سوال کرد
- شما باید برای ارسال دیدگاه وارد شوید
برای پیاده سازی یک لیست dropdown می توانید از کتابخانه react-native-element-dropdown استفاده کنید. با دستور زیر نصبش کنید:
npm install react-native-element-dropdown --save
برای استفاده هم می توانید از مثال زیر الگو بگیرید:
import React, { useState } from 'react';
import { StyleSheet } from 'react-native';
import { Dropdown } from 'react-native-element-dropdown';
import AntDesign from '@expo/vector-icons/AntDesign';
const data = [
{ label: 'Item 1', value: '1' },
{ label: 'Item 2', value: '2' },
{ label: 'Item 3', value: '3' },
{ label: 'Item 4', value: '4' },
{ label: 'Item 5', value: '5' },
{ label: 'Item 6', value: '6' },
{ label: 'Item 7', value: '7' },
{ label: 'Item 8', value: '8' },
];
const DropdownComponent = () => {
const [value, setValue] = useState(null);
return (
<Dropdown
style={styles.dropdown}
placeholderStyle={styles.placeholderStyle}
selectedTextStyle={styles.selectedTextStyle}
inputSearchStyle={styles.inputSearchStyle}
iconStyle={styles.iconStyle}
data={data}
search
maxHeight={300}
labelField="label"
valueField="value"
placeholder="Select item"
searchPlaceholder="Search..."
value={value}
onChange={item => {
setValue(item.value);
}}
renderLeftIcon={() => (
<AntDesign style={styles.icon} color="black" name="Safety" size={20} />
)}
/>
);
};
export default DropdownComponent;
const styles = StyleSheet.create({
dropdown: {
margin: 16,
height: 50,
borderBottomColor: 'gray',
borderBottomWidth: 0.5,
},
icon: {
marginRight: 5,
},
placeholderStyle: {
fontSize: 16,
},
selectedTextStyle: {
fontSize: 16,
},
iconStyle: {
width: 20,
height: 20,
},
inputSearchStyle: {
height: 40,
fontSize: 16,
},
});
*از placeholderStyle
و selectedTextStyle
و inputSearchStyle
برای استایل دهی استفاده کنید. (لیست کامل prop ها را اینجا ببینید)
*اگر از dropdown داخل Formik
استفاده می کنید، می توانید با توابع زیر مقدار آن را دریافت کنید:
onChangeText={handleChange}
onChange={item => {
values["gender"] = item.value;
}}
- نفیسه افقی 1 سال قبل پاسخ داد
- شما باید برای ارسال دیدگاه وارد شوید