Работа с checkbox в React

Работата с checkbox също се осъществява по подобен принцип, само че вместо атрибут value ние задаваме атрибут checked. Ако в този атрибут се подаде true - тогава checkbox ще бъде отметнат, а ако false - няма да бъде отметнат:

jsxfunction App() {
  return <div>
    <input type="checkbox" checked={true}  /> отметнат
    <input type="checkbox" checked={false} /> не отметнат
  </div>;
}

Обикновено в атрибут checked се подава state, съдържащ булева стойност:

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

Също като при работата с input полета, ако се зададе твърдо стойността на атрибута checked - състоянието на checkbox няма да може да се промени. За коректна работа при промяна на checkbox ще променяме неговия state на противоположна стойност:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  function handleChange() {
    setChecked(!checked); // инвертираме state
  }
  
  return <div>
    <input type="checkbox" checked={checked} onChange={handleChange} />
  </div>;
}

Можем да опростим:

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

Нека изведем състоянието на checkbox в абзац, използвайки тернарен оператор:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  return <div>
    <input type="checkbox" checked={checked} onChange={() => setChecked(!checked)} />
    <p>състояние: {checked ? 'отметнат' : 'не отметнат'}</p>
  </div>;
}
Задание 1

Даден е checkbox, бутон и абзац. При клик на бутона, ако checkbox е отметнат, изведете в абзаца текст за поздрави с потребителя, а ако не е отметнат - текст за сбогом.

Задание 2

С три checkbox полета помолете потребителя да избере езиците, които знае: html, css и js. Резултата от избора за всеки език извеждайте в отделни абзаци.