2017-08-26 122 views
0

我只想将一个嵌套数组数据存储到一个变量中。如何在JavaScript中将值存储到嵌套数组中?

我有这样的代码:

var indents = []; 
    for (var i = 1; i <= this.state.box; i++){ 
     indents.push(<Input fluid label={i} placeholder='Item Description..' style={{padding: 5}} />); 
    } 

<Input label={{ basic: true, content: 'box' }} 
       labelPosition='right' 
       placeholder='Enter Quantity...' 
       size = 'small' 
       value={this.state.box} 
       onChange={this.handlebox} 
       /> 

这意味着,如果我输入一个数字的方块的,另一场将呈现相同数量的领域,我输入的。但问题是我无法获得所有项目的价值。

Example: if I input to a box field with 5, 
     another 5 fields show, name items 

我怎样才能获得的价值是这样的:

Values = [valueOf_field1, valueOf_field2, valueOf_field3, valueOf_field4, valueOf_field5]; 
+0

我不太明白你想达到什么目的。所以你有这些'Input'组件,并且当你将5放入组件的框中时,你希望5个Input组件的字段值显示在另一个组件中?另外,当你试图做什么特别的事情时,你面临什么样的具体问题/错误?任何控制台错误? – Jayce444

+0

如果我输入任何数量的该字段,我有一个'INPUTFIELD'名称框,比如说5,还有另一个显示名称项目的“INPUTFIELD”。注意:因为我输入5到INPUTFIELD(方框),所以会显示5个INPUTFIELD(项目)。现在我的问题是如何将INPUTFIELD(项目)的5个值存储到变量中。 – Deee

回答

1

您可以使用refs来实现这一目标。如果你想验证和东西,我建议formsy可以做得更好。但这种方式是一种教育你的简单方法。

// Get all the inputs to a ref object. 
render() { 
    var indents = []; 
    for (var i = 1; i <= this.state.box; i++){ 
    indents.push(<Input ref={(input) => this[`input_${i}`] = input;} fluid label={i} placeholder='Item Description..' style={{padding: 5}} />); 
    } 
} 

然后假设你有一个onSubmit方法来获取所有的值。取这样的值

onSubmit =() => { 
    const values = []; 
    for (var i = 1; i <= this.state.box; i++){ 
    values.push(this[`input_${i}`].value); 
    } 
// now your `values` variable will have all the values 
} 
+0

它给了我这个错误先生:TypeError:无法读取未定义的属性'值'。 – Deee

+0

您是否将这些缩进渲染到了用户界面上?你什么时候调用onsubmit方法? – Panther

+0

是的,我做了你说的,但它给了我一个错误TypeError:当我点击提交按钮时,无法读取未定义的属性'值',所以我认为这与监听器有关。 – Deee