react-native - 如何在 react-native 的循环内创建动态选择器?
问题描述
这是我的步骤:
json代码:
"features": [
{
"name": "size",
"selected": null,
"values": [
{
"value": "40",
"label": "40",
},
{
"value": "41",
"label": "41",
}
]
},
{
"label": "color",
"selected": "gray",
"values": [
{
"value": "gray",
"label": "gray"
},
{
"value": "black",
"label": "black",
}
]
}
]
Step2:定义状态
constructor(props) {
super(props);
this.state ={selectedDropDownValue:[]};
}
第三步:
主要渲染:
render{
return(
{this.printPickers()}
);
}
和
printPickers(){
const listItems = data.map((obj,index) =>
<Item picker key={'mykey1' + index}>
<Picker
selectedValue={(this.state.selectedDropDownValue[obj.label]) ?this.state.selectedDropDownValue[obj.label] : obj.selected}
onValueChange={(itemValue, itemIndex, itemName) =>this.pickerChange(itemIndex,itemValue,obj.name)}
>
{
obj1.values.map( (v)=>{
return <Picker.Item key={'mykey2' + index} label={v.label} value={v.value} />
})
}
</Picker>
</Item>
);
return (<View>{listItems}</View>);
}
最后:
pickerChange(itemIndex,itemValue,itemName){
this.setState({
selectedDropDownValue: Object.assign(this.state.selectedDropDownValue, {[itemName]: itemValue})
});
}
我的问题是,我无法通过触摸它们来更改每个选择器的选项,但是通过console.log(this.state.selectedDropDownValue)
,我得到了正确的数据。
我的问题是,我无法通过触摸它们来更改每个选择器的选项,但是通过console.log(this.state.selectedDropDownValue)
,我得到了正确的数据。
解决方案
json数据存在一些不匹配。两者都应该有一个 key label或name。
因此,假设这两个项目都有键作为标签,那么您需要像这样更新您的 pickerChange 函数调用:
this.pickerChange(itemIndex,itemValue,obj.label)
推荐阅读
- unidata - 没有分页符的 UniQuery LIST
- javascript - 如何通过角度检查空格键键事件?
- animation - three.js:使用骨骼动画获取更新的顶点?
- python - 如何从 HTTP 响应接收 zip 文件
- python - 将与不同值关联的重复条目转换为包含这些值列表的条目?
- c# - 如何使用 ASP.NET Core 下载 png 文件
- continuous-integration - 对于无法打开 GL 库 libGLESv2.so 的 Espresso 测试,CircleCI 启动模拟器步骤失败
- r - 选择从 ggmap 的 revgeocode 返回的地址格式
- javascript - 根据 Adonis.js 中数据库的结果更改 HTML 标记
- bash - 如何删除之间具有特定数字模式的行