我想从下拉列表中选择一个项目,并希望将staffId的状态设置为该项目。我想使用下拉菜单显示名称,但是在选择名称后,将Staffid设置为state。我还希望在不对if-else循环中的值进行硬编码的情况下实现此目标,因为我要处理数千个数据。
这是从WebAPI提取并存储在称为项的状态中的数据
this.setState({
items: dataSource
staffId: ''
})
项目的状态将是这样。
[
{"departmentName":"HOUSE","employeeName":"TEST1", "staffId" : "00001"},
{"departmentName":"HOUSE","employeeName":"TEST2", "staffId" : "00002"},
{"departmentName":"HOUSE","employeeName":"TEST3", "staffId" : "00003"}
]
我已经创建了一个下拉菜单,仅使用emplyeeName作为本机响应。我正在为库使用react-native-material-dropdown。我想显示employeeName,但是当用户选择一个姓名时,获取一个id
let staff = this.state.listOfEmployees.map(item => ({
value: item.employeeName
staffId: item.staffId
}));
<Dropdown
label='Staff Name'
baseColor='#0079b5'
data={staff}
selectedValue={value}
onChangeText={(staffId) => this.onChangeName(staffId)}
/>
在此功能中,我想将staffId的状态设置为所选值的staffId。
onChangeName = (staffId) => {
//set the state of staffId to the staffId of the selected value.
//For Example, if AUNG THU 1 is selected, the state of staffId is '00001'.
this.setState({
staffId: staffId
})
}
最佳答案
您可以使用valueExtractor
和labelExtractor
道具来执行此操作。应该看起来像这样:
<Dropdown
label='Staff Name'
baseColor='#0079b5'
data={staff}
selectedValue={value}
valueExtractor={({ staffId }) => staffId}
labelExtractor={({ employeeName }) => employeeName}
onChangeText={(staffId) => this.onChangeName(staffId)}
/>