Стейт не обновляется при toogle, а меняется всего один раз

Стейт задач — массив с объектами:

const [tasks, setTasks] = useState([]);

Объекты задач в массиве такого плана:

   {
      catId: 'a8fc3d-b502-1e1-a167-42140181a1e8',
      id: '137c10e-0c03-fdf-231e-3185e1bdb1e',
      isDone: false,
      task: 'Найти решение',
    };

В компоненте checkbox инпут:

  function handleRadioInput() {
    markTaskDone(id);
  }

    <input
      className={styles.checkbox}
      type='checkbox'
      id={id}
      checked={isDone}
      onChange={handleRadioInput}
    />

При клике на чекбокс, я пытаюсь изменить стейт isDone по принципу toogle, но не работает. При клике на чекбокс стейт меняется на true, а при повторном клике уже ничего не меняется. Подскажите пожалуйста в чем у меня ошибка?

Стейт меняю этой функцией:

  function markTaskDone(id) {
    setTasks((prev) =>
      prev.map((item) => (item.id === id ? { ...item, isDone: !prev.isDone } : item))
    );
  }

Ответы (1 шт):

Автор решения: qweezz

Спасибо за решение @p1uton

Правильно было так:

  function markTaskDone(data) {
    console.log(data);
    const { id, checked } = data;
    setTasks((prev) => prev.map((item) => (item.id === id ? { ...item, isDone: !item.isDone } : item)));
  }
→ Ссылка