Как работает функция полной проверки в ReactJs?

Я составляю список дел, и я не совсем понимаю всю эту функцию полной проверки, например, откуда этот элемент, и поэтому ... может ли кто-нибудь помочь мне объяснить! Большое вам спасибо за помощь!

Это функция:

      const handleComplete = (todo) => {
    setTodos(
        todos.map((item) => {
            if(item.id === todo.id){
                return {...item, completed: !item.completed}
            }
            return item
        })
    )
}

3 ответа

Это функция, которая создает и возвращает новый массив, заполненный элементами, являющимися результатами функции, вызываемой для каждого элемента в массиве:

      //[array] [element]     [transformed  element inserted in result array]
//  |        |                               |
//  v        v                               v
todos.map((item) => ({...item, completed: !item.completed}));

Так что независимо от твоего todos массив хранится как элементы, возвращаемый результат будет передан в качестве аргумента в setTodos будет массивом {...item, completed: !item.completed} элементы каждый.

Вы можете узнать больше о Array.prototype.map()в документации MDN .

Обратите внимание, что это чистый Javascript и не имеет ничего общего с React или какой-либо другой фреймворком / библиотекой.

Как предполагает ваш код, вы пытаетесь обновить один элемент из своего списка элементов todos, поэтому, когда ваш handleComplete вызывается функция, передается объект todo, поэтому в setTodos функция, с помощью карты сначала мы находим элемент из коллекции задач, который совпадает с идентификатором переданного объекта задачи.

Если найдем, вернем объект, ...item это помогает сохранить все элементы, присутствующие в объекте элемента, и только обновить complete ключ.

является массивом, и каждый массив имеет mapфункция, которая выполняет итерацию по массиву и используется для изменения элементов в массиве. Так представляет собой ток массива. Вы можете назвать это как угодно.

В этой функции вы устанавливаете состояние использования setTodos. Здесь мы проверяем, что если item.id равно todo.id затем установите состояние.

И при установке состояния мы сохраняем исходное состояние todos используя это return {...item, completed: !item.completed}

Три точки до item называется деструктуризацией.

Разрушение заданий

Функция карты

Другие вопросы по тегам