У меня проблема с удалением индекса из массива объектов вact.js.
У меня есть таблица, которая отображает имя и значение данных из состояния.Каждая строка будет иметь кнопку, чтобы удалить его, и это работает.
Есть еще одна кнопка, которая выдвигает новый объект ввода HTML в массив, чтобы пользователь мог добавлять новые значения.У меня проблема с кнопкой удаления.Если я добавлю 2 или 3 строки, кнопка удаления всегда удаляет последнюю строку.
Я не уверен, почему кнопка удаления не работает.
Я ценю, если кто-нибудь может помочь.
Вот код:
class App extends Component {
constructor(props) {
super(props);
this.state = {
datas: [
{ name: 'test', value: 'test' },
{ name: 'test 1', value: 'test 1' }
]
}
}
delete = (index) => {
let datas = this.state.datas.filter((e, i) => i !== index);
this.setState({ datas : datas });
}
addnew = () => {
let datas = this.state.datas;
datas.push( {name: <input />, value: <input /> })
this.setState({ datas : datas });
}
render() {
return (
<div>
<button onClick={this.addnew}>Add</button>
<table>
<thead>
<tr>
<th>Name</th>
<th>Value</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{this.state.datas.map((data, index) => (
<tr key={index}>
<th>{data.name}</th>
<th>{data.value}</th>
<th><button onClick={() => this.delete(index)}>delete</button> </th>
</tr>
))}
</tbody>
</table>
</div>
);
}}
export default App;