2016-07-07 116 views
0

我使用react-select,想循环内循环来代表它作为选择的值和标签:通过对象的数组对象

// Inside the component's render: 

var myVar = [ 
    this.props.foo.forEach(function(a){ 
    {value: a.name, label: a.name} // line 83 
    }) 
]; 

//return 

<Select ref="stateSelect" options={myVar} simpleValue clearable={this.state.clearable} 
    name="" 
    value={this.state.bar} onChange={this._myFunc} 
/> 

this._myFunc是不相关的这个问题。我想是这样的:

var myVar = [ 
    {value: "hello", label: "world"}, 
    // the list goes on 
]; 

与上面的代码,我有:

Parse Error: Line 83: Unexpected token :

我不是的JavaScript强烈找出这种解决方案,但是这可能吗?链接阅读?

+1

'{...}'是在这里被认为是** block **。可能你需要'someObj = {value:a.name,label:a.name}' – Tushar

回答

2

如果您打算从this.props.foo对象数组初始化myVar然后尝试

var myVar = this.props.foo.map(function(a){ 
    return {value: a.name, label: a.name} ; 
}); 
+0

失败的propType:提供给'Option',期望'object'的'array'类型的prop''option'无效。检查“选择”的渲染方法。 – Sylar

+0

@Sylar你还在得到'解析错误:第83行:意外的标记:'?作为本声明的输出结果,你期望得到什么? – gurvinder372

+0

在我的第一条评论中出现错误。在我的问题中,“这个列表正在进行中”,这是有效的,但我需要数组中的值和标签。 – Sylar

1

最好的是环中呈现FCT这样的:

render(){ 
return (
    <div> 
    <Select 
    ref="stateSelect" 
    options={ 
     this.props.foo.map((a) => {name: a.name, label: a.name}) 
    } 
    simpleValue 
    clearable={this.state.clearable} 
    name="" 
    value={this.state.bar} 
    onChange={this._myFunc} 
    /> 
    </div>); 
} 
+0

这是es6吗? “胖箭头”?也许在其他项目中很有用。 – Sylar

+1

是的es6与jsx。你可以在es5 map中使用(function(a){return {name:a.name,label:a.name}}) –