ReactJS如何将SelectField中的数据推送到数组中的对象?

时间:2016-03-01 07:57:19

标签: arrays multidimensional-array reactjs

我有一个数组,你可以在下面看到。如何将Selectfield中的数据插入prints.printMethod?

selectedOrder: {
  category: {},
  product: {},
  brand: {},
  prints: {
    printMethod: {},
    height: '',
    width: '',
    colors: ''
  }
}

下面的代码是onChange函数。我不确定我是否遗漏了什么。我希望有人可以帮助我。

onBrandingsChange = (event, index, value) => {
    var newSelect = this.state.selectedOrder;
    newSelect.prints.push(value);
    this.setState({selectedOrder: newSelect});
  }

 <SelectField value={this.state.selectedOrder.prints.printMethod} onChange={this.onBrandingsChange}>
    {_.map(this.state.brandings, (b) => {
      return <MenuItem value={b.name} primaryText={b.name} key={b.id}/>;
    })}
</SelectField>

1 个答案:

答案 0 :(得分:1)

prints是一个Object而不是数组类型,所以不能在这里使用push。

如果希望将值设置为单一深度,则可以直接将值分配给键。

类似的东西:

onBrandingsChange = (event, index, value) => {
    var newSelect = this.state.selectedOrder;
    // set it
    newSelect.prints.printMethod = value
    // or use assign
    newSelect.prints = Object.assign(newSelect.prints, { printMethod: value });

    this.setState({selectedOrder: newSelect});
}

如果您希望这是一个数组,您需要更改selectedOrder州的类型。