Войти Регистрация
Код-ревью

28. Виджет баланса в личном кабинете

Лёгкая

TypeScript · 24 строк

Виджет показывает номер, баланс и время обновления и опрашивает API каждые 5 секунд. Токен живёт 15 минут, после чего API отвечает 401. Отметьте строки с ошибками.

В работе: Главная страница личного кабинета: виджет открыт у абонента часами.

Как проверяем Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
ReactsetIntervalтокеныобработка ошибок

Источник: на задачах МТС: личный кабинет абонента. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.
  1. import { useEffect, useState } from "react";
  2. type Balance = { amount: number; updatedAt: string; phone: string };
  3. export function BalanceWidget({ token }: { token: string }) {
  4. const [balance, setBalance] = useState<Balance>({} as Balance);
  5. useEffect(() => {
  6. setInterval(async () => {
  7. const r = await fetch(`/api/balance?token=${token}`);
  8. setBalance(await r.json());
  9. }, 5000);
  10. }, [token]);
  11. console.log("balance", balance);
  12. return (
  13. <div className={balance.amount < 0 ? "negative" : ""}>
  14. <div>{balance.phone}</div>
  15. <div>Баланс: {balance.amount} ₽</div>
  16. <div>Обновлено: {new Date(balance.updatedAt).toLocaleTimeString()}</div>
  17. </div>
  18. );
  19. }