Reactда массивлар устида реактив операциялар

Келинг энди массив элементлари билан реактив манпуляциялар қилишни ўрганамиз. Бунинг учун биз ҳар бир li га воқеа ишловчисини қўямиз, унда параметр сифатида ушбу li нинг массивдаги номерини ўтказамиз:

jsxfunction App() {
  const [notes, setNotes] = useState([1, 2, 3, 4, 5]);
  
  const result = notes.map((note, index) => {
    return <li key={index} onClick={() => doSmth(index)}>
      {note}
    </li>;
  });
  
  return <div>
    <ul>
      {result}
    </ul>
  </div>;
}

Функциямиз ичида биз ўз массивимизнинг элементи устида исталган операцияни бажара оламиз:

jsxfunction App() {
  ...
  
  function doSmth(index) {
    let copy = Object.assign([], notes);
    copy[index] += '!'; // элемент билан нарса қиламиз
    setNotes(copy);
  }
}
Задание 1

Сонлардан иборат массив берилган. Уни ul рўйхат шаклида чиқаринг. Ҳар қандай li га босилганда унинг сонини квадратга кўтаринг.

Задание 2

Ҳар бир li нинг охирида тугма қилинг, уни босганда ушбу li рўйхатдан ўчирилсин.

Задание 3

Инпут берилган. Ҳар қандай li га босилганда ушбу li матни инпутга тушсин.

Задание 4

Олдинги масалани шундай модификация қилингки, инпут фокусини йўқотганда ўзгартирилган матни мос li га тушин.

Задание 5

Тугма берилган. Ушбу тугмага босилганда li лар тартибини тескарига буринг.