Я новичок в React и пытаюсь создать toDoApp. Я пытаюсь создать событие onClick для удаления элемента из состояния задач. Но, похоже, это не работает. А можно еще спросить, как реализовать id ключей, чтобы можно было убрать нужную задачу, которую я хочу?
import React from 'react';
import './App.css';
class App extends React.Component {
constructor(){
super();
this.state = {
value: '',
tasks: []
};
this.handleChangeEvent = this.handleChangeEvent.bind(this)
this.addItem = this.addItem.bind(this)
this.removeItem = this.removeItem(this)
}
handleChangeEvent(event) {
this.setState({
value: event.target.value
})
}
addItem(){
if (this.state.value === ''){
alert('Enter a task!')
} else {
const newTask = [...this.state.tasks, this.state.value]
this.setState({
tasks: newTask,
value: ''
})
}
}
removeItem(){
this.state.tasks.pop()
this.setState({
tasks: this.state.tasks,
})
}
render(){
const itemList = this.state.tasks.map((num) =>
<li>{num}</li>
);
return(
<div>
<input type = "text" value = {this.state.value} onChange = {this.handleChangeEvent}></input>
<button onClick = {this.addItem}>+</button>
<button onClick = {this.removeItem}>-</button>
<ul>{itemList}</ul>
{this.state.tasks}
</div>
)
}
}
export default App;сильный текст



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


pop() удаляет последний элемент, но React не будет перерисовывать компонент, так как setState вызывается с тем же массивом. Вы можете создать новый массив и использовать его для обновления состояния.
removeItem() {
this.state.tasks.pop()
this.setState({
tasks: [...this.state.tasks],
})
}