2017-06-04 50 views
0

如何将动态输入字段值传递为状态为数​​组并在用户再次更改输入时更新该值?将js动态输入字段值反应到状态

输入字段是由JSON数据生成的,在该状态下,我们无法定义所有的初始值。任何人都可以为这类问题提供一些建议吗?

this.state = { 
file:[{value1,value2}] 
}; 

和输入字段生成像

{this.state.language.map((item,index) => 
<div className="be-checkbox inline" key={index} > 
<input type="text" onChange={this.handleChange.bind(this, index)} value={this.state.index} /> 
</div> 
)} 
+0

你可以更新您正在使用的相关代码的问题,所以它很容易帮助 –

+0

要更新状态或完整状态里面的阵列? –

+0

你好,我需要在数组内的值,如 this.state = {file:[{value1,value2}]}; 和输入字段等 {this.state.language.map((项目,指数)=>

)}产生 由于在[预先 –

回答

0

在每一个输入的onChange添加和值等的下方。

<input type="text" onChange={this.handleChange.bind(this, index)} value={this.state.index}/> 

添加函数的调用

handleChange(name, e){ 
    var change = {}; 
    change[name] = e.target.value; 
    this.setState(change); 
    } 
0

变量输入与JSON值

您可以构建一个模型来存储在新的价值观和两种方法,一种处理新的价值观和另一个用于更新状态。然后,您可以使用数组中的JSON数据对键进行调用map(),并为每个条目生成一个输入。

class MyFormComponent extends React.Component { 
    inputValues = new Map(); 

    onInputChange(evt, key){ 
     inputValues.set(key, evt.target.value); 
    } 

    updateState() { 
     const update = inputValues.reduce((updater, value) => { 
      return {...updater, value} // assuming value === {key: value} from your example, because {value, value} is not valid JSON 
     }, {}); 

     this.setState({ 
      file: [JSON.stringify(update)] 
     }); 
    } 

    render(
     const keys = Object.keys(JSON.parse(this.state.file[0])) 

     return keys.map(key => { 
      // onChange will give you new values to your map model. 
      <input 
       type="text" 
       key={key} 
       onChange={eve => this.onInputChange(evt, key)} 
      /> 
     }); 
    } 
} 

现在叫this.updateState(),只要你想使用当前的输入值更新状态。

<input ... onBlur={this.updateState} />