Вам просто нужно установить значение PickerItem для соответствующего идентификатора.Это означает изменение:
<Picker.Item label={item.name} value={item.name} />
на
<Picker.Item label={item.name} value={item.id} />
Теперь
onValueChange={(itemValue, itemIndex) => this.setState({teacher_name: itemValue})}
сохраняет teacher_id
в переменной состояния teacher_name
.Вы можете создать новую переменную состояния с именем teacher_id
в своем конструкторе и сохранить там идентификатор.
Кроме того , я бы порекомендовал небольшой рефакторинг.Вместо:
{
// btw here is a typo your array is called allTeachers
this.state.allteachers ?
this.state.allteachers.map((item,key) => (
<Picker.Item label={item.name} value={item.name} />
))
:
false
}
я бы создал функцию renderPickterItems:
renderPickerItems(allTeachers){
if (allTeachers) {
return(
allTeachers.map((item,key) => (
<Picker.Item label={item.name} value={item.id} />
))
);
}
}
, которую можно вызвать с помощью:
<Picker.Item label='Select Teacher' value='0' />
{this.renderPickerItems(this.state.allTeachers)}
</Picker>
Полный рабочий пример:
https://snack.expo.io/HJwLcXT6E