Práce s checkbox v Reactu

Práce s checkbox probíhá také podle podobného principu, jen místo atributu value uvádíme atribut checked. Pokud do tohoto atributu předáme true - checkbox bude zaškrtnut, a pokud false - nebude zaškrtnut:

jsxfunction App() {
  return <div>
    <input type="checkbox" checked={true}  /> zaškrtnut
    <input type="checkbox" checked={false} /> nezaškrtnut
  </div>;
}

Obvykle se do atributu checked předává stav, obsahující logickou hodnotu:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  return <div>
    <input type="checkbox" checked={checked} />
  </div>;
}

Stejně jako při práci se vstupy, pokud pevně nastavíme hodnotu atributu checked - stav checkboxu nebude možné změnit. Pro správnou funkci budeme při změně checkboxu měnit jeho stav na opačnou hodnotu:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  function handleChange() {
    setChecked(!checked); // invertujeme stav
  }
  
  return <div>
    <input type="checkbox" checked={checked} onChange={handleChange} />
  </div>;
}

Můžeme zjednodušit:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  return <div>
    <input type="checkbox" checked={checked} onChange={() => setChecked(!checked)} />
  </div>;
}

Vypišme stav checkboxu do odstavce pomocí ternárního operátoru:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  return <div>
    <input type="checkbox" checked={checked} onChange={() => setChecked(!checked)} />
    <p>stav: {checked ? 'zaškrtnut' : 'nezaškrtnut'}</p>
  </div>;
}
Задание 1

Je dán checkbox, tlačítko a odstavec. Po kliknutí na tlačítko, pokud je checkbox zaškrtnut, vypište do odstavce text pozdravu s uživatelem, a pokud není zaškrtnut - text rozloučení.

Задание 2

Pomocí tří checkboxů požádejte uživatele o výběr jazyků, které ovládá: html, css a js. Výsledek výběru pro každý jazyk vypisujte do samostatných odstavců.