我正在尝试为kay,value对中的本地反应中的picker元素填充键值。当我尝试传递键值列表时,应用程序崩溃。
例如:(这不起作用)
-- In the constructor
stateList: [{1:'Fortsworth'},{2:'Chicago'}],
--In the render()
this.state.stateList.map( (s, i) => {
console.log('key='+i+',value='+s);
return <Picker.Item key={i} value={s} label={s} />
});
然而,只有在没有键值对的情况下传递数组时它才有效。以下代码有效。
-- In the constructor
stateList: ['Fortsworth','Chicago'],
--In the render()
this.state.stateList.map( (s, i) => {
console.log('key='+i+',value='+s);
return <Picker.Item key={i} value={s} label={s} />
});
我需要将密钥传递为“1”并将值作为“Fortsworth”传递给选择器。感谢您的意见。
答案 0 :(得分:1)
这是我所知道的唯一方法:
Object.keys(this.state.stateList).map(function(key) {
let value = this.state.stateList[key];
console.log('key=' + key + ',value=' + value);
return <Picker.Item key={key} value={value} label={value} />
}
基本上,您循环遍历键列表,然后使用该键从地图中提取值。
如果有人有更好的解决方案,请务必将其作为答案,因为我对此也很好奇。
编辑:
抱歉,刚刚意识到你有一个地图条目列表。对于我的回答,您需要stateList
作为地图:
stateList: {1:'Fortsworth', 2:'Chicago'}
答案 1 :(得分:0)
这应该会给你一些想法 -
var states = [{'1': 'Fortsworth'}, {'2': 'Chicago'}];
var key = '';
states.map(s => {
key = Object.keys(s)[0];
console.log("key",key,"value",s[key]);
});