Объясните за setState и инкремент?
Вызов setState заменяет старый объект состояния новым. Изменения в обоих случаях вы делаете в старом.
Префиксный инкремент работает, так как в вызов setState передается значение увеличенное на единицу, постфиксный инкремент возвращает значение до увеличения.
В любом случае, мутировать объект состояния неправильно, это противоречит идеологии react и может вызвать ошибки в других местах.
Правильный вариант:this.setState(prevState => ({ counter: prevState.counter + 1 }));
На последок добавлю, что ++this.state.counter  не эквивалентно this.state.counter + 1. Префиксный инкремент эквивалентен записи:this.state.counter += 1
или:this.state.counter = this.state.counter + 1
Постфиксный, что-то вроде этого:(this.state.counter = this.state.counter + 1, this.state.counter - 1)
Вам бы разобраться, как оператор ++ работает. Сначала вы изменяете значение state.counter напрямую (чего делать НЕ НАДО), затем setState устанавливает в качестве нового значения counter'а его предыдущее значение, возвращаемое постфиксным ++.