Из библиотеки docs ваш объект данных должен иметь эту форму
let data = [{
value: 'Banana',
}, {
value: 'Mango',
}, {
value: 'Pear',
}];
Имя свойства должно называться value
, поэтому вы должны сопоставить свой источник данных, чтобы иметь тот же формат
componentDidMount() {
const url = 'http://104.197.28.169:3000/showLeaveType'
fetch(url)
.then(response => response.json())
.then((responseJson) => {
const dropdownData = responseJson.data.map(item => ({ value: item.leaveType }));
this.setState({
dataSource: responseJson,
isLoading: false,
dropdownData
})
})
.catch(error => console.log(error)) //to catch the errors if any
}
render() {
return(
<View>
<Dropdown style={{ fontSize: 15 }}
data= {this.state.dropdownData}
baseColor='#b8b8b8' itemColor='grey' selectedItemColor='#484848'
containerStyle={styles.dropdownStyle} pickerStyle={styles.dropdownPicker}
valueExtractor={({ value }) => value}
onChangeText={LeaveTypetext => this.setState({LeaveTypetext })}
rippleCentered={true}
rippleInsets={{ top: 0, bottom: 0, backgroundColor: 'red' }}
inputContainerStyle={{ marginTop: -25, borderBottomColor: 'transparent', marginLeft:
10 }}
defaultValue="Please Select"
></Dropdown>
PS: чтобы использовать это решение, вы должны инициализировать dropdownData
в вашем состоянии:
this.state = {
dataSource: []
isLoading: false,
dropdownData: [] //<- add this line
}