Javascript ReactJS在动态多输入中获取值
我已经做了动态输入现在我的问题是得到每个输入的值,但它是一个多输入?我怎样才能做到这一点。这是jsfiddleJavascript ReactJS在动态多输入中获取值,javascript,arrays,reactjs,loops,object,Javascript,Arrays,Reactjs,Loops,Object,我已经做了动态输入现在我的问题是得到每个输入的值,但它是一个多输入?我怎样才能做到这一点。这是jsfiddle perRow() { return this.state.values.map((el,i) => <tr key={i}> <td className="col-md-4"> <div className=
perRow() {
return this.state.values.map((el,i) =>
<tr key={i}>
<td className="col-md-4">
<div className="form-group">
<input type="text" className="form-control" placeholder="Name" value={el||''} onChange={this.handleChange.bind(this, i)}/>
</div>
<div className="form-group">
<input type="text" className="form-control" placeholder="Hourly Rate" />
</div>
<p><strong>Total hours:</strong> 0:00</p>
<p><strong>Total pay:</strong> $0.00</p>
<button className="btn btn-danger do-not-print" onClick={this.removeClick.bind(this, i)}>Remove employee</button>
</td>
<td>Monday</td>
<td><input type="text" className="form-control" /></td>
<td><input type="text" className="form-control" /></td>
<td><input type="text" className="form-control" /></td>
<td>0:00</td>
<td>$0.00</td>
</tr>
)
}
perRow(){
返回此.state.values.map((el,i)=>
总小时数:0:00
总薪酬:$0.00
解雇员工
星期一
0:00
$0.00
)
}
首先,创建
构造函数
,我们将创建一个onChange函数,因此需要在构造函数内部绑定它
constructor(props){
super(props);
this.state = {
username: '',
password: '',
};
this.onChange = this.onChange.bind(this);
}
然后我们需要创建onChange
函数,它将按名称处理
onChange(e){
this.setState({ [e.target.name] : e.target.value });
}
最后,使用name属性调用onChange函数,您需要在状态中定义输入名称以避免任何问题
<td><input type="text" className="form-control" name="username" onChange={this.onChange} /></td>
<td><input type="text" className="form-control" name="password" onChange={this.onChange} /></td>
3.另一种方法,您可以像这样绑定它
onChange = (e) => {
this.setState({ [e.target.name] : e.target.value });
}
onChange(e){
this.setState({ [e.target.name] : e.target.value });
}
<input
type="text"
name="username"
onChange={this.onChange.bind(this)}
/>
onChange(e){
this.setState({[e.target.name]:e.target.value});
}
4_u传递数据的另一种替代方法
onChange(e,data){
console.log(data); // result is "something"
this.setState({ [e.target.name] : e.target.value });
}
<input
type="text"
name="username"
onChange={(e)=>this.onChange(e, 'something')}
/>
onChange(e,数据){
console.log(data);//结果是“某物”
this.setState({[e.target.name]:e.target.value});
}
this.onChange(e,'something')}
/>
首先,创建构造函数
,我们将创建一个onChange函数,因此我们需要在构造函数内部绑定它
constructor(props){
super(props);
this.state = {
username: '',
password: '',
};
this.onChange = this.onChange.bind(this);
}
然后我们需要创建onChange
函数,它将按名称处理
onChange(e){
this.setState({ [e.target.name] : e.target.value });
}
最后,使用name属性调用onChange函数,您需要在状态中定义输入名称以避免任何问题
<td><input type="text" className="form-control" name="username" onChange={this.onChange} /></td>
<td><input type="text" className="form-control" name="password" onChange={this.onChange} /></td>
3.另一种方法,您可以像这样绑定它
onChange = (e) => {
this.setState({ [e.target.name] : e.target.value });
}
onChange(e){
this.setState({ [e.target.name] : e.target.value });
}
<input
type="text"
name="username"
onChange={this.onChange.bind(this)}
/>
onChange(e){
this.setState({[e.target.name]:e.target.value});
}
4_u传递数据的另一种替代方法
onChange(e,data){
console.log(data); // result is "something"
this.setState({ [e.target.name] : e.target.value });
}
<input
type="text"
name="username"
onChange={(e)=>this.onChange(e, 'something')}
/>
onChange(e,数据){
console.log(data);//结果是“某物”
this.setState({[e.target.name]:e.target.value});
}
this.onChange(e,'something')}
/>
是的,您可以获得类似于this.state.values.join(',')的输入值。
因为您的输入值以数组的形式存在于状态值中
handleChange(i, event) {
let values = [...this.state.values];
values[i] = event.target.value;
this.setState({ values });
console.log(this.state.values)
}
勾选下面的示例,这将帮助您确定是的,您可以获得输入值,如
this.state.values.join(',')
因为您的输入值以数组的形式存在于状态值中
handleChange(i, event) {
let values = [...this.state.values];
values[i] = event.target.value;
this.setState({ values });
console.log(this.state.values)
}
勾选下面的示例,这肯定会帮助您这里是使用react hook的工具,希望这也能有所帮助
const [value, setValue] = useState([])
const handleChange = (i, event) => {
let values = [...value];
values[i] = e.target.value;
setValue(values)
console.log(values)
}
获取多个输入文本中的值的步骤:
值
状态复制到变量mutable中。es6中的示例let values=[…value]
e.target.value
完成时值
保存在值
变量中setValue
下面是使用react钩子的工具,希望这也有帮助
const [value, setValue] = useState([])
const handleChange = (i, event) => {
let values = [...value];
values[i] = e.target.value;
setValue(values)
console.log(values)
}
获取多个输入文本中的值的步骤:
值
状态复制到变量mutable中。es6中的示例let values=[…value]
e.target.value
完成时值
保存在值
变量中setValue
请看我的护照。我的问题是状态我将有多个用户名和密码你是说你有两个问题吗?上面的答案将使您能够根据输入属性nameyai创建多个输入,但我的问题是它是动态的。示例:在一行中,我输入了用户名和密码,然后当我单击“添加行”按钮时,我将有另一个用户名和密码输入。在我当前的代码中,我已经解决了输入行的添加问题,现在我的问题是获取每个对象数组中的值。好的,我现在明白了,您只想保留以前的数据并添加新数据。我说得对吗?比如['PrevData','NewDate','newnewnew'],请查看我的JSFIDLE。我的问题是状态我将有多个用户名和密码你是说你有两个问题吗?上面的答案将使您能够根据输入属性nameyai创建多个输入,但我的问题是它是动态的。示例:在一行中,我输入了用户名和密码,然后当我单击“添加行”按钮时,我将有另一个用户名和密码输入。在我当前的代码中,我已经解决了输入行的添加问题,现在我的问题是获取每个对象数组中的值。好的,我现在明白了,您只想保留以前的数据并添加新数据。我说得对吗?像['PrevData'、'NewDate'、'NewNew']一样,动态但单个元素可能重复。我需要有关动态多输入元素的帮助,如果您有任何疑问,请告诉我:)@MayankShukla Cool!谢谢!谢谢你的帮助!是的,我错过了一些东西!动态但单个元素的可能重复。我需要有关动态多输入元素的帮助,如果您有任何疑问,请告诉我:)@MayankShukla Cool!谢谢!谢谢你的帮助!是的,我错过了一些东西!