setState это асинхронный метод Те ситуации когда мы используем state, но он изменился в другом месте (например асинхронно) а нам необходимо основываться на его ТЕКУЩЕМ состоянии, то используем function
Но если мы уверенны что ни какого асинхроннного вмешательстова в изминении state не будет то можно использовать первый пожход Хотя второй подход более безопасный и правильный
addCounter = () => {
// this.setState({
// counter: this.state.counter + 1
// })
this.setState((prevState) => {
return {
counter: prevState.counter +1
}
})
}