DevGang
Авторизоваться

Создание динамической системы оценки по звездам в React

Если речь идет об отзывах пользователей, то звездные рейтинги становятся повсеместным и интуитивно понятным способом выражения своего мнения. В этой статье мы рассмотрим процесс создания динамической системы звездного рейтинга с помощью React. Этот интерактивный компонент позволяет пользователям легко оценивать что-либо по звездной системе и даже выбирать количество звезд.

Настройка базовых параметров

Для начала импортируем необходимые стили и зависимости React:

В этом фрагменте мы импортируем необходимый CSS-файл для стилизации и React вместе с хуком useState для управления состоянием в функциональных компонентах.

import "./styles.css";
import React, { useState } from "react";

Управление состоянием

Мы используем хук useState для управления тремя элементами состояния: rating (для хранения выбранной пользователем оценки), hover (для отслеживания текущей наведенной звезды) и totalStars (для управления общим количеством отображаемых звезд).

const [rating, setRating] = useState(null);
const [hover, setHover] = useState(null);
const [totalStars, setTotalStars] = useState(5);

Отображение звезд

Этот фрагмент кода динамически генерирует элементы звезды на основе состояния totalStars. Он использует метод Array.from() для создания массива заданной длины, а затем отображает этот массив для создания элементов звезды. Каждая звезда представлена в виде радиовхода и элемента span, отображающего символ звезды (★). Цвет звезд меняется в зависимости от текущего рейтинга и состояния наведения.

{[...Array(totalStars)].map((star, index) => {
  const currentRating = index + 1;

  return (
    <label key={index}>
      <input
        type="radio"
        name="rating"
        value={currentRating}
        onChange={() => setRating(currentRating)}
      />
      <span
        className="star"
        style={{
          color:
            currentRating <= (hover || rating) ? "#ffc107" : "#e4e5e9"
        }}
        onMouseEnter={() => setHover(currentRating)}
        onMouseLeave={() => setHover(null)}
      >
        &#9733;
      </span>
    </label>
  );
})}

Общее количество звезд

Эта часть кода предоставляет поле ввода под компонентом звездного рейтинга, позволяющее пользователям изменять общее количество отображаемых звезд. Функция handleChange обновляет состояние totalStars на основе значения, введенного пользователем в поле ввода.

<label style={{ fontWeight: 400 }}>
  Number of stars:
  <input
    style={{ marginLeft: "12px", maxWidth: "50px" }}
    onChange={handleChange}
    value={totalStars}
    type="number"
    min={1}
  />
</label>

Стилизация компонента

.App {
  font-family: sans-serif;
  text-align: center;
}

input[type="radio"] {
  display: none;
}
.star {
  cursor: pointer;
  font-size: 2rem;
  margin: 5px;
}

Ссылка на рабочий код: https://dhmyh4.csb.app/

Заключение

Таким образом, динамическая система оценки звезд на основе React демонстрирует слияние пользовательского опыта и технологических инноваций. Благодаря интерактивным функциям, таким как эффект наведения и настраиваемое количество звезд, этот компонент демонстрирует универсальность современной веб-разработки. Предоставляя пользователям возможность легко оставлять отзывы, он демонстрирует важность ориентированного на пользователя дизайна при создании привлекательных и отзывчивых веб-приложений.

Не стесняйтесь настраивать и расширять эту основу, создавая более сложные функции расчета или интегрируя ее в более крупные приложения. Если у вас возникнут вопросы или потребуется дополнительная помощь, не стесняйтесь спрашивать! Счастливого кодинга!

Источник:

#JavaScript #React
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу