0
我做了一个简单的类,它显示了一个列表,您可以将li项添加或删除到状态中。但是,这些li项目包含输入框。当从状态中删除列表项时输入不会改变
假设有3个li项目,里面有3个输入框。您在第一个列表项的输入框中输入内容,然后您想要删除包含您填充的输入的li。
即使我的索引是正确的反应总是删除最后一个项目,或者我认为它删除了最后一个项目,也许它会删除具有正确索引但保留输入值的确切项目。我该如何解决这个问题?
class DataTable extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [
{product: 'a', quantity: 0, price: 0},
],
};
}
render() {
if (!this.props.isOpen) {
return false;
}
const items = this.state.data.map((key, i) => {
return (
<li key={i}>
<input name="text" defaultValue={key.product}/>
<buttun className="btn" onClick={this.removeItem.bind(this, i)}/>
</li>
)
})
return (
<div>
<button className="btn" onClick={this.addItem.bind(this)}>Add Product</button>
<ul>
{items}
</ul>
</div>
)
}
addItem() {
const newState = update(this.state.data, {
$push: [{product: '', quantity: 0, price: 0}]
});
this.setState({
data: newState
})
}
removeItem(index) {
const newArray = update(this.state.data, {
$splice: [[index, 1]]
});
this.setState({
data: newArray
})
}
}
export default DataTable
是的!事实证明,唯一的关键是我的问题。我改变我的代码,就像你展示的那样,它现在正在工作!非常感谢! –
@T.CemYılmaznp。文件确实应该更好地强调这个问题。 –