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。文件確實應該更好地強調這個問題。 –