Работа з checkbox у React

Праца з checkbox таксама ажыццяўляецца па падобным прынцыпе, толькі замест атрыбута value мы паказваем атрыбут checked. Калі ў гэты атрыбут перадаць true - то чэкбокс будзе адзначаны, а калі false - не будзе адзначаны:

jsxfunction App() {
  return <div>
    <input type="checkbox" checked={true}  /> адзначаны
    <input type="checkbox" checked={false} /> не адзначаны
  </div>;
}

Звычайна ў атрыбут checked перадаецца стэйт, які змяшчае лагічнае значэнне:

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

Гэтак жа, як і пры працы з інпутамі, калі жорстка задаць значэнне атрыбута checked - стан чэкбокса нельга будзе змяніць. Для карэктнай працы будзем па змяненні чэкбокса мяняць яго стэйт на супрацьлеглае яму значэнне:

jsxfunction App() {
  const [checked, setChecked] = useState(true);
  
  function handleChange() {
    setChecked(!checked); // інвертуем стэйт
  }
  
  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>;
}

Давайце вывядзем стан чэкбокса ў абзац, выкарыстоўваючы тэрнарны аператар:

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

Дадзены чэкбокс, кнопка і абзац. Па кліку на кнопку, калі чэкбокс адзначаны, выведзіце ў абзац тэкст прывітання з карыстальнікам, а калі не адзначаны - тэкст развітання.

Задание 2

З дапамогай трох чэкбоксаў папрасіце карыстальніка выбраць мовы, якія ён ведае: html, css і js. Вынік выбару па кожнай мове выводзьце ў асобныя абзацы.