2017-08-26 83 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