Sobes.tech
Junior — Senior

Review and debugging of React components

livecode

Task condition

In this task, you are required to review the code and fix any issues you find at your discretion.

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>Visited cities: {cities.map(el => <ListItem key={el.name} handleToggle={toggleItem} label={el.name} />)}</ul>
      <ul>Desired car brands: {carBrands.map(el => <ListItem key={el.name} handleToggle={toggleItem} label={el.name} />)}</ul>
    </div>
  );
}