【发布时间】:2021-01-14 23:49:26
【问题描述】:
我在handleChange 中遇到了setState 的问题。
因此,在代码中单击addList 后,将出现div 和input 和button,然后当我在input 内输入时,input state 将更新,单击添加按钮后div 将消失。
所以我的问题是下次单击addList 时,先前输入的值仍然存在并且hideAddList handler 没有将input 状态设置为空,并且当我输入新打开的div 之前的@987654334 时@ 将覆盖。即使使用索引和扩展运算符,它仍然存在同样的问题。
我该怎么办?
export class myClass extends Component {
constructor(props) {
super(props);
this.state = {
input: [{ title: '' }]
};
this.addList = this.addList.bind(this);
this.hideAddList = this.hideAddList.bind(this);
this.titleHandleChange = this.titleHandleChange.bind(this);
}
addList() {
var x = document.getElementById("btn-list")
var y = document.getElementById("add-button")
x.style.display = 'none'
y.style.display = ''
}
hideAddList() {
var x = document.getElementById("btn-list")
var y = document.getElementById("add-button")
x.style.display = ''
y.style.display = 'none';
this.setState(prevState => ({ input: [...prevState.input, {title:''}]}))
}
HandleChange(e, index){
const { name, value } = e.target;
const list = [...this.state.input];
list[index][name] = value;
this.setState({ input: list});
}
render() {
return (
<div>
<button id="btn-list" className="btn btn-default btn-list" type="submit" onClick={this.addList}>Add Another List</button>
{this.state.input.map((x, i) => {
return (
<div key={i} id="add-button" className="add-button" style={{ display: "none" }}>
<input id="input" type="text" onChange={(e) => {this.HandleChange(e, i)}} value={x.title} name="title" className="form-control add-input" />
<button className="btn btn-default btn-list-add" onClick={this.hideAddList} type="submit">Add</button>
</div>
)})}
</div>
)
}
}
export default myClass
【问题讨论】:
标签: javascript html reactjs