venanen, ещё раз - обновление стейта вызывает рендеринг компонента. При рендеринге компонента вы обновляете стейт. Ну и всё. Если не понимаете - наверное, вам рано браться за реакт, сперва стоит хоть какой-то опыт в программировании получить.
Обновлять стейт следует не при рендеринге, а по наступлении какого-либо события. Например, когда пользователь по кнопке кликает.
venanen, говорю же - постоянно обновляете стейте. Уберите этот setNotes(123123). Вы что, не понимаете, что обновление состояния вызывает рендеринг компонента?
Возвращайте +/-1, в зависимости от знака, а не саму разность: