【发布时间】:2021-03-29 19:03:14
【问题描述】:
我是 React 的新手,我很困惑,我想要的是我有一个下拉列表,其中选项为 1、2、3、4.... 直到 n。假设如果我在下拉数字 5 上选择,那么应该动态生成 5 个输入字段。也适用于创建的每个输入字段。我应该可以使用删除按钮手动删除它们。
我已经创建了输入选项的添加,但它是手动的,就像我们单击添加按钮时添加了新选项,当我们单击删除时,带有索引的特定选项被删除。您可以参考此链接获取代码
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
users: [{firstName: "", lastName: ""}]
};
this.handleSubmit = this.handleSubmit.bind(this);
}
addClick(){
this.setState(prevState => ({
users: [...prevState.users, { firstName: "", lastName: "" }]
}))
}
createUI(){
return this.state.users.map((el, i) => (
<div key={i}>
<input placeholder="First Name" name="firstName" value={el.firstName ||''} onChange={this.handleChange.bind(this, i)} />
<input placeholder="Last Name" name="lastName" value={el.lastName ||''} onChange={this.handleChange.bind(this, i)} />
<input type='button' value='remove' onClick={this.removeClick.bind(this, i)}/>
</div>
))
}
handleChange(i, e) {
const { name, value } = e.target;
let users = [...this.state.users];
users[i] = {...users[i], [name]: value};
this.setState({ users });
}
removeClick(i){
let users = [...this.state.users];
users.splice(i, 1);
this.setState({ users });
}
handleSubmit(event) {
alert('A name was submitted: ' + JSON.stringify(this.state.users));
event.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}>
{this.createUI()}
<input type='button' value='add more' onClick={this.addClick.bind(this)}/>
<input type="submit" value="Submit" />
</form>
);
}
}
ReactDOM.render(<App />, document.getElementById('container'));
https://jsfiddle.net/mayankshukla5031/qL83cf2v/1/
但现在我想用下拉菜单生成它,选择输入选项的大小让我们说 5 因此动态创建 5 个选项字段。
谁能指导我。
【问题讨论】:
-
请添加您的代码
-
我已经添加了我手动创建的代码,但需要下拉动态生成的建议。
标签: javascript jquery reactjs