如何在 React 中为输入数组做一个处理程序
How to do a single handler for array of inputs in React
我知道如何为多个输入字段创建多个处理程序,但我只想创建一个处理程序来处理动态数量的输入字段,但我遇到了困难。我无法修改输入,它们具有固定值。
这是主要组件的状态
this.state = {
assetAccounts:["Cash","Financial Investment","Real Estate","Private Business Value"],
accounts:[0,1,2,3]
}
this.onChangeAccount = this.onChangeAccount.bind(this)
这是处理程序
onChangeAccount = (e,index) => {
const value = e.target.value;
let data = this.state.accounts;
data[index]=value;
console.log(data)
this.setState({
accounts: [...data]
})
}
这是呈现的:
<table>
{this.state.assetAccounts.map((account,index)=>(<Account value={this.state.accounts[index]} name={account} key={index} onChange={this.onChangeAccount.bind(this)}/>))}
</table>
账号是我自己的组件:
import React from 'react';
class Account extends React.Component {
render() {
return (
<div>
<tr>
<td width="200px">{this.props.name}</td>
<td>
<input
type="text" value={this.props.value}
className="form-control"
onChange={this.props.onChange}
/>
</td>
</tr>
</div>
);
}
}
export default Account;
如果有人知道如何使每个单独的帐户都可以单独编辑,我将不胜感激。感谢您的帮助!
组件 Account
的属性 onChange
只接受一个参数 e
。
使用Account
时应传递参数index
。
就像这样:
<table>
{this.state.assetAccounts.map((account,index)=>(<Account value={this.state.accounts[index]} name={account} key={index} onChange={e => this.onChangeAccount(e, index)}/>))}
</table>
实际上,在 Account
中传递 e.target.value
作为 onChange
的参数比 e
更好。
我知道如何为多个输入字段创建多个处理程序,但我只想创建一个处理程序来处理动态数量的输入字段,但我遇到了困难。我无法修改输入,它们具有固定值。
这是主要组件的状态
this.state = {
assetAccounts:["Cash","Financial Investment","Real Estate","Private Business Value"],
accounts:[0,1,2,3]
}
this.onChangeAccount = this.onChangeAccount.bind(this)
这是处理程序
onChangeAccount = (e,index) => {
const value = e.target.value;
let data = this.state.accounts;
data[index]=value;
console.log(data)
this.setState({
accounts: [...data]
})
}
这是呈现的:
<table>
{this.state.assetAccounts.map((account,index)=>(<Account value={this.state.accounts[index]} name={account} key={index} onChange={this.onChangeAccount.bind(this)}/>))}
</table>
账号是我自己的组件:
import React from 'react';
class Account extends React.Component {
render() {
return (
<div>
<tr>
<td width="200px">{this.props.name}</td>
<td>
<input
type="text" value={this.props.value}
className="form-control"
onChange={this.props.onChange}
/>
</td>
</tr>
</div>
);
}
}
export default Account;
如果有人知道如何使每个单独的帐户都可以单独编辑,我将不胜感激。感谢您的帮助!
组件 Account
的属性 onChange
只接受一个参数 e
。
使用Account
时应传递参数index
。
就像这样:
<table>
{this.state.assetAccounts.map((account,index)=>(<Account value={this.state.accounts[index]} name={account} key={index} onChange={e => this.onChangeAccount(e, index)}/>))}
</table>
实际上,在 Account
中传递 e.target.value
作为 onChange
的参数比 e
更好。