开发者问题收集

使用 javascript map 读取键值对以填充选择器时出错,react native

2017-03-12
323

我正尝试从键值对中填充 React Native 中 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”传递给选择器。感谢您的输入。

2个回答

这是我所知道的唯一方法:

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'

TheJizel
2017-03-13

这应该能给你一些想法 -

var states = [{'1': 'Fortsworth'}, {'2': 'Chicago'}];
var key = '';

states.map(s => {
  key = Object.keys(s)[0];
  console.log("key",key,"value",s[key]);
});
vinayr
2017-03-13