/
DevDenzo
/
ERP
Обзор
Документация
Войти
/
DevDenzo
/
ERP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/hooks/ui/useAllChecked.js
29 строк
2 KB
Denis Sklyarskij
Инициализирован репозиторий
14 янв 2026, 23:32
14 янв 2026, 23:32
1df3d47
Код
Авторство
О чём код?
export const useAllChecked = (checkedRows, setCheckedRows, renderItems) => { // Обработчик клика мастер чекбокса const handleMasterCheck = () => { // Выполняем переключение состояния всех чекбоксов: если все отмечены - снимает, иначе - помечает const newCheckedState = !Object.values(checkedRows).every(Boolean); // С помощью reduce формируем новый объект состояний чекбоксов // Параметры: // - acc - аккумулятор // - item - текущий элемент из renderItems // Логика работы // - Берем id элемента, считая его ключом в объекте состояний // - Присваиваем этому ключу одно состояние // - Возвращаем измененный аккумулятор для след шага const updatedCheckedRows = renderItems.reduce((acc, item) => { // Устанавливаем одинаковое состояние для всех чекбоксов acc[item.id] = newCheckedState; return acc; }, {}); // Начальное состояние - пустой объект setCheckedRows(updatedCheckedRows); }; // Определяем все ли строки отмечены const allChecked = Object.values(checkedRows).length > 0 && Object.values(checkedRows).every(Boolean); return { allChecked, handleMasterCheck } };