Назад к задачам
Junior — Senior
6

Проведение ревью и отладка React‑компонентов

Компании, где спрашивали:

МТСМТС
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В этом задании требуется выполнить обзор кода и исправить найденные недочёты по своему усмотрению.

const ListItem = (itemProps) => {
  const { label, handleToggle } = itemProps;
  return (
    <li><input type="checkbox" onChange={handleToggle} name={label} />{label}</li>
  );
};

export default function List() {
  const [checkedItems, setCheckedItems] = useState([]);

  useEffect(() => {
    const onDblClick = () => console.log('dblclicked');
    document.addEventListener('dblclick', onDblClick);
    return () => document.removeEventListener('dblclick', onDblClick);
  }, []);

  const toggleItem = (e) => {
    const itemName = e.target.name;
    if (checkedItems.includes(itemName)) {
      setCheckedItems(checkedItems.filter(el => el !== itemName));
    } else {
      setCheckedItems([...checkedItems, itemName]);
    }
  };

  const cities = [
    { name: 'Moscow' },
    { name: 'St. Petersburg' },
    { name: 'London' },
  ];

  const carBrands = [
    { name: 'Toyota' },
    { name: 'Haval' },
    { name: 'Nissan' },
  ];

  return (
    <div>
      <ul>Посещённые вами города: {cities.map(el => <ListItem key={el.name} handleToggle={toggleItem} label={el.name} />)}</ul>
      <ul>Желаемые вами марки автомобилей: {carBrands.map(el => <ListItem key={el.name} handleToggle={toggleItem} label={el.name} />)}</ul>
    </div>
  );
}