Задать вопрос
  • Как реализовать систему рейтинга?

    @Neiz-Kap
    Помимо того, что при выборе + заблокировалась возможность снова на неё нажать, то ещё нужно, чтобы могли нажать на -, а то и вообще отменить оценку при повторном нажатии на ту кнопку, которую в последний раз нажимали.

    Могу предложить создать колонку isGoodRating в бд, по-умолчанию она будет пустой строкой isGoodRating = "" в колонку таблицу ЗаписиПользователяРейтинг(или как у тебя называется)

    Для чего она нужна?
    Если isGoodRating пустая строка, то значит пользователь не выбирал ничего или отменил вообще свою оценку. Если true, то нажал на плюс, если false, то минус

    Частичная реализация
    На клиенте
    по-нажатию на кнопку + будет похожая функция

    onClickPlusRating = () => {
      // если пользователь не нажимал на кнопку +
      // условие !isChoiseRating, не считается
      if (isChoiseRating !== true) {
        isChoiseRating = true;
        rating++;
      }
      // если повторно нажал на кнопку +
      else {
        isChoiseRating = "";
        rating--;
      }
      // отправляем запрос на сервер на изменение рейтинга и колонки isChoiseRating
    };


    С нажатием на - аналогичным образом, только вместо true будет false. Надеюсь поймёшь)

    А ещё можно подсвечивать оценку, если она изменена пользователем, поставив условие:
    isChoiseRating !== ""
    Ответ написан
    Комментировать