【发布时间】:2018-03-05 12:57:09
【问题描述】:
有一个加号按钮可以增加页面中文本字段的数量。增加文本字段后,我想在单击提交按钮后一次显示所有文本字段输入值。 但是在这里它给 onChange setState 问题带来了问题。如何处理?有什么帮助吗?
这里是 => DEMO
class App extends Component {
constructor(props) {
super(props);
this.state = {
arr: [],
firstname: '',
lastname: '',
setarr: [],
temp: []
};
this.addTextfields = this.addTextfields.bind(this);
this.changeFirstname = this.changeFirstname.bind(this);
this.changeLastname = this.changeLastname.bind(this);
}
addTextfields(e) {
let htmlContent = [];
htmlContent.push(
<div>
<input type="text" placeholder="first name" onChange={this.changeFirstname} value={this.state.firstname} /> <br/> <br/>
<input type="text" placeholder="last name" onChange={this.changeLastname} value={this.state.lastname} /> <br/> <br/>
</div>
);
this.setState({ arr: this.state.arr.concat(htmlContent) });
}
changeFirstname(e) {
this.setState({ firstname: e.target.value });
}
changeLastname(e) {
this.setState({ lastname: e.target.value });
}
showTexts() {
console.log(this.state.firstname, this.state.lastname);
var add = [this.state.firstname, this.state.lastname];
this.state.temp = this.state.temp.concat(add);
this.setState({ setarr: this.state.temp, firstname: '', lastname: '' });
// localStorage.setItem(this.state.arr, 'names');
}
render() {
return (
<div>
<div className="App">
<input type="text" onChange={this.changeFirstname} placeholder="first name" value={this.state.firstname} /> <br/> <br/>
<input type="text" onChange={this.changeLastname} placeholder="last name" value={this.state.lastname} /> <br/> <br/>
<button type="submit" onClick={this.addTextfields}>Plus</button>
{this.state.arr}
</div>
<div className="submit-button">
<button type="submit" onClick={this.showTexts.bind(this)}>Submit</button>
</div>
<div>
{this.state.setarr}
</div>
</div>
);
}
}
render(<App />, document.getElementById('root'));
【问题讨论】:
-
你能解释一下你想要达到的目标吗?我看到可以有多个输入,但它们都应该在状态中更改相同的字符串(名字,姓氏),这有点令人困惑。
-
通过点击加号按钮增加输入字段,然后我只想在输入字段上输入内容并在点击提交按钮后显示提交按钮下的所有内容。
-
@Subhojit 是一个字段还是多个字段,您还想在其中接收名称还是可以是一些随机文本?另外,请告诉我们您计划如何接收这些字段中的数据?
标签: javascript reactjs onclick onchange