首页 > 解决方案 > React Native:如何从具有嵌套 json 数组的状态中检索数据并映射该状态以获取具有给定 id 的特定值

问题描述

我有一个反应本机选择器,它有一组对象,我从我的 API 中获取并保存到属性下的状态。 这是我获取的数据的屏幕截图

当我选择属性下拉列表时,我需要从 _id 中找到数组中的正确对象。我需要使用 Javascript 逻辑来完成此操作,而无需再次调用我的服务器。这是我在下拉菜单中的代码

 <View style={{margin: 20, flexDirection: 'row', flex: 1}}>
                        {/*PROPERTY....................................................*/}
                        <View style={{padding: '10px'}}>
                            <Picker style={styles.picker} selectedValue={this.state.pickerProperty}
                                    onValueChange={(itemValue, itemIndex) => this.getPropertyById(itemValue)}>
                                <Picker.Item label="Select Property" value=""/>
                                {this.state.properties.map((item, key) => (
                                    <Picker.Item label={item.PropertyName} value={item._id} key={key}/>
                                ))}
                            </Picker>
                            {/*{this.getPropertyById()}*/}
                        </View>
                        {/*TYPE........................................................*/}
                        <View style={{padding: 10}}>
                            <Picker style={styles.picker} selectedValue={this.state.pickerType}
                                    onValueChange={(itemValue, itemIndex) => this.setState({pickerType: itemValue})}>
                                <Picker.Item label="Select Type" value=""/>
                                {this.state.propById.map((item, key) => (
                                    <Picker.Item label={item.tname} value={item.tname} key={key}/>
                                ))}

                            </Picker>
                            <Text>{this.state.pickerType}</Text>
                        </View>
                    </View>

我需要在这个函数中编写我的代码

 getPropertyById=(itemValue)=> { //Need the code here
}

标签: typescriptreact-nativereact-native-webreact-native-picker-selectreact-native-state

解决方案


this.setState({
  pickerProperty : this.state.properties.find(item => item._id === itemValue)
})

或作为一个函数

getPropertyById(itemValue) {
  this.setState({
    pickerProperty : this.state.properties.find(item => item._id === 
    itemValue)
  })
}

推荐阅读